Symbian http 连接与代理
2010-06-22 02:58:00 来源:WEB开发网WAP能够运行于各种无线网络之上,如GSM、GPRS、CDMA1X等,即将开通的3G移动通信网络同样也支持WAP。打个比喻,GPRS和GSM都是马路,而WAP是在马路上的汽车,汽车上运输的货物,就是WAP上的网站内容了。
WAP只是一种GPRS应用模式,它与GRPS的接入方式是无关的。WAP应用采用的实现方式是“终端+WAP网关+WAP服务器”的模式
4) symbian开发中遇到的问题:
首先是symbian的字符串问题:
HBufC8* heapBuf = HBufC8::NewLC(fileLength);
TPtr8 postData8 = heapBuf->Des();
file.Read(postData8);
注意: 此处是关键,费了一个礼拜,不能把文件直接生成入HBufC8,如HBufC8::NewLC(fileStream, fileLength)也没法得到,因为HBufC是不可以修改的, 用 Des() 返回一个可修改的指针TPtr8,然后读入文件file.Read(TPtr8),symbian没有提供可供修改的堆描述符HBuf.
其次是代理设置问题.
http在symbian真机上走的是CMWAP,需要设置http代理,代理IP地址是:10.0.0.172,端口是:80
在设置好代理后,发送URL连接,下面是get请求的程序代码:
TUriParser8 uri;
uri.Parse(aUri);
TBuf8<20> aProxy8(_L8("10.0.0.172:80"));
RStringF iPrxAddr = iSession.StringPool().OpenFStringL(aProxy8);
CleanupClosePushL(iPrxAddr);
THTTPHdrVal iPrxUsage(iSession.StringPool().StringF(HTTP::EUseProxy,RHTTPSession::GetTable()));
iSession.ConnectionInfo().SetPropertyL(iSession.StringPool().StringF(HTTP::EProxyUsage,RHTTPSession::GetTable()), iPrxUsage);
iSession.ConnectionInfo().SetPropertyL(iSession.StringPool().StringF(HTTP::EProxyAddress,RHTTPSession::GetTable()), iPrxAddr);
CleanupStack:: PopAndDestroy();
RStringF method = iSession.StringPool().StringF(HTTP::EGET,
RHTTPSession::GetTable());
iTransaction = iSession.OpenTransactionL(uri, *this, method);
RHTTPHeaders hdr = iTransaction.Request().GetHeaderCollection();
//原来的错误做法
// _LIT8(KHost, "10.0.0.172:80");
// SetHeaderL(hdr, HTTP::EHost, KHost);
// SetOnLineHostHeader(iPrxAddr); //添加 "X_OnLine_Host"
SetHeaderL(hdr, HTTP::EUserAgent, KUserAgent);
SetHeaderL(hdr, HTTP::EAccept, KAccept);
iTransaction.SubmitL();
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mShopping/archive/2009/08/05/4411657.aspx
更多精彩
赞助商链接