最近一直做symbian http上传下载项目,在几个问题上面绕了个大弯,耽误了好长时间,现总结一下遇到的问题以及解决方法,为己为人.简单介绍一下基础知识.
1) GRPS接入方式:
CMNET和CMWAP是中国移动GPRS网络的两个不同APN(Access Point
Name接入点名称)。CMNET提供了NAT服务,使用该服务的手机可以直接访问internet。CMWAP只提供了WAP代理和HTTP代理,手机
上网能访问的范围有限,接入时只能访问GPRS网络内的IP(10,*,*,*)。因此CMWAP主要用于手机WAP上网,CMNET则是用于PC,笔记
本电脑,PDA等设备实现GPRS上网。两者手机上网的方式没有差别,如此划分是中国移动对手机上网服务对象的定位不同,所以他们的应用范围和资费标准不
同。
2) CMNET和CMWAP区别:
A:CMWAP只开放80,8080,9201端口,适合http,wap访问(10.0.0.172起初是做为CSD方式的无线接入的网关,那时使用的
是9201端口,运行的是WAP(Wireless Access
Protocal)一种专门的无线终端访问数据网络的衉议。它的作用其实更多的是作为Mobile
Network和Internet之间的网关,将无线终端的WAP address请求递交给DNS解析,然后重定向至WAP站点。
进入GPRS时代后10.0.0.172开始作为proxy使用开放了80端口,仍然承载WAP并开始提供更多的服务,例如:MMS和HTTP。手机这时其实更象是局域网中使用proxy的Internet address上网的设备)
CMNET适合象socket等非http请求访问.
B: CMNET可以把他想象成PC上的直接连接INTERNET。如果用CMNET接入点,可以直接上INTERNET
CMWAP就相当于PC上的局域网。中国电信只针对CMWAP开放2个端口,就是80和9201,如果CMWAP接入,要连接INTERNET,需要才用HTTP代理协议.
C:费用比较
CMWAP所需要的都是移动网络内部的流量,成本可以忽略不计算.
CMNET则需要中国移动为此而支付网间结算费用
D: 访问内容
用CMWAP只能访问服务器位于wap网内的网站或者使用提供服务的网站位于wap网内的软件。例如掌迅通,10game之类。
用CMNET,任何服务,网络,软件,都可以自由使用
3) WAP简介
WAP(Wireless Application Protocol)无线应用协议是一个开放式标准协议,它使用一种类似于HTML的标记式语言WML,相当于国际互联网上的HTML(超文件标记语言)并可通过WAP Gateway直接访问特定的网页。
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();
转自:http://hi.baidu.com/gensoft/blog/item/21617932728ae64aad4b5f94.html
分享到:
相关推荐
总结,这个压缩包提供了学习和理解HTTP协议的基础材料,包括HTTP的基本概念、请求响应机制、常见方法、HTTP/1.1与HTTP/2的区别以及在Symbian系统中的应用。通过分析www.pudn.com.txt和HTTP这两个文件,我们可以深入...
【标题】:symbian_mms_sendrecv.zip_...以上就是关于诺基亚塞班系统中处理MMS发送与接收的技术细节,这些知识点涵盖了从系统架构到实际操作的各个方面,对于理解塞班系统以及移动通信中的多媒体信息交换具有重要意义。
【塞班系统迷你地图(SISX)】是专为塞班(Symbian)操作系统设计的一款轻量级地图应用。塞班系统曾是智能手机市场的重要玩家,尤其在2000年代至2010年代初期,它在诺基亚手机上广泛使用。SISX文件是塞班系统中的软件...
服务搜索包括两个主要部分:RSdpDatabase子会话和蓝牙服务搜索代理。前者用于管理服务记录和服务属性,后者则用于发现远程设备提供的服务及其属性。 服务属性是描述服务的关键元素,如整型、布尔型、字符串等。所有...
在Symbian操作系统中,接入点(Access Point)是设备连接到互联网或其他网络服务的关键配置。这个概念在智能手机和平板电脑等移动设备上尤为重要,因为它们通常通过多种方式(如Wi-Fi、蜂窝数据等)连接到网络。下面...
4. **网络通信**:发送彩信涉及HTTP或WAP协议,需要处理连接建立、数据传输和错误处理。Symbian提供了API接口,如RConnection和RHTTPProtocol,用于处理网络通信。 5. **存储管理**:彩信的多媒体内容可能占用大量...
RSessionBase类中的CreateSession()方法用于建立客户与服务器的连接,通过服务器名称来创建连接。SendReceive()方法则负责在客户和服务器之间发送和接收消息。 **RMessage类**: RMessage类在服务器端代表来自...
例如,一个网络应用可能会有一个动态设置列表,其中包含网络连接类型、代理服务器设置等选项,这些选项可以在用户切换网络环境时自动更新。 该例子中的S60_Platform_Dynamic_Setting_List_Example_v1_1_en文件可能...
Symbian OS 提供了一个强大的平台,支持多种高级功能,如多任务处理、网络连接和多媒体支持等。由于其广泛的应用和复杂性,掌握合适的设计模式对于Symbian开发者来说至关重要。 #### 四、书中的主要设计模式 本书...
蓝牙 API 在 Symbian OS 中与操作系统其他组件紧密集成,这使得开发者能够方便地访问蓝牙硬件并执行各种操作。API 通过多个层来实现这种集成,确保了高效且稳定的性能表现。 #### 三、蓝牙 API 使用指南 ##### 3.1...
- **L2CAP(逻辑连接控制与适配协议)**:用于控制连接,处理多路连接,并负责数据的分割与重组,以及传递服务质量信息。 - **SDP(服务发现协议)**:被用于发现蓝牙设备提供的服务。 - **HCI(主机控制器接口)...
- Visual C++的`wininet`库可以用于创建HTTP连接,与Web服务进行通信。 5. **文件"sms.pkl"和"sms.pkt"**: - 这两个文件可能是PocketBuilder应用的数据文件,可能包含了应用程序的设置、用户数据或者预编译的...
- 采用Client/Server架构,PC作为主机与手机上的客户端/代理程序(Software Agent)通信,实现双向数据交换。 3. **支持的平台与操作系统**: - BSQUARE方案对开放式手机操作系统提供现成的Agent支持,如Windows ...
- Symbian用户会通过“设置”->“连接功能”->“网络承载方式”进行设置。 每个接入点的配置项包括:名称、接入点名称、代理、端口、用户名、密码、服务器、MMSC(多媒体信息服务中心)、彩信代理、彩信端口、彩信...
网络代理模块则由连接请求监听模块、控制命令处理模块和视频数据收发模块构成。这两个模块共同确保了视频数据的稳定传输和有效控制。 整个视频监控系统的通信流程如下:手持设备通过3G网络连接到网络代理,注册自身...
《移动计算理论与技术》在线作业的参考答案涵盖了多个知识点,包括移动计算的基本概念、多址接入技术、移动Agent系统、无线通信协议、操作系统和中间件等。 1. **移动计算中间件**: - SOMA(Software Oriented ...