伙计们,我来了,cmwap 问题啊

Careerman_Symbian 2008-03-26 06:15:14
研究了两天了,总是搞不定这个cmwap联网问题
我就是想用sdk自带http的例子,访问 www.baidu.com 这个网页。接入点什么的都设置好了。
我先说下这个cmwap访问www.baidu.com 网页的整个流程,不知道我的理解对不对,不对一定要纠正我。

iTransaction = iSession.OpenTransactionL(uri, *this, method);

RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();

SetHeaderL(hdr, HTTP::EUserAgent, KUserAgent);
SetHeaderL(hdr, HTTP::EAccept, KAccept);
//如果走cmwap 那么需要加入下面这个头
AddHeaderExL(hdr,KCmwapXOnlineHost, KRealUrl);

// Submit the transaction. After this the framework will give transaction
// events via MHFRunL and MHFRunError.
iTransaction.SubmitL();

----------------------------------------------
其中
_LIT8(KCmwapXOnlineHost, "X-Online-Host: ");
_LIT8(KRealUrl, "202.108.22.5"); //www.baidu.com IP

void CClientEngine::AddHeaderExL(RHTTPHeaders aHeaders, const TDesC8 &aHeaderField, const TDesC8 &aHeaderValue)
{
RStringPool stringPool = iSession.StringPool();
RStringF valStr = stringPool.OpenFStringL(aHeaderValue);
THTTPHdrVal headerVal(valStr);
RStringF sHeaderField = stringPool.OpenFStringL(aHeaderField);
aHeaders.SetFieldL(sHeaderField, headerVal);
valStr.Close();
sHeaderField.Close();
}

---------------------------------------------------
好了,大家一定熟悉上面的代码,sdk自带的。

iTransaction = iSession.OpenTransactionL(uri, *this, method);
上面这句,如果我们用cmnet来进行http的访问,那么这个uri就是 www.baidu.com 。
但现在我们要用cmwap来访问,这个uri是不是 10.0.0.172 .因为在我的理解,cmwap就是一个代理,通过访问 10.0.0.172 这个IP来进行代理操作。(这句是不是正确的?)


我们再来看这句 AddHeaderExL(hdr,KCmwapXOnlineHost, KRealUrl);
这句上面有注释:就是如果用cmwap来进行网络连接,那么加上这句。这个函数来自网上的一个博客。也就是说我们真正要访问的网页 www.baidu.com 要放到 KRealUrl 中。

程序执行之后返回了400错误 ,返回的文本如下:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml><card><p><do type="prev" name="Back" label="Back"><prev/></do>Malformed URL</p></card></wml>

里面有一个 Malformed URL 估计应该是提交的头不正确。

我还进行了直接对 10.0.0.172 这个IP的访问,当然是用cmwap,返回的是下面文本:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml><card><p><do type="prev" name="Back" label="Back"><prev/></do>Not an error. You should not be seeing this message.</p></card></wml>

对比两个文本,Malformed URL 应该是提交的头不正确,哪位有过这方便的经验啊,如果你用socket来模拟http链接,那么希望你也写一下提交的GET 请求字符串。
谢谢大家,谢谢啦。




...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
以后需再关注,现在先帮你顶一下
Eddy_0825 2008-03-28
  • 打赏
  • 举报
回复
代理设置有问题:
可以参考一下我的blog:
http://blog.csdn.net/eddy_0825/archive/2007/05/10/1603270.aspx
搞不定可以联系我。
dyw 2008-03-27
  • 打赏
  • 举报
回复
楼主使用的uri的值是什么?

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧