本版版主招募中

 
标题: 给个 symbian HTTP上传文件的例子·
yunxing520
LU新生
Rank: 1



UID 103993
精华 0
积分 11
帖子 20
活跃指数 12
LU金币 32 个
LU金条 0 个
阅读权限 10
注册 2008-3-19
 
发表于 2008-3-26 12:54  资料  个人空间  短消息  加为好友 
给个 symbian HTTP上传文件的例子·

如题·


固定文件  运行就直接把文件上传

[ 本帖最后由 蓝色的忧郁 于 2008-3-26 18:01 编辑 ]

顶部
蓝色的忧郁
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
禁止发言


UID 274
精华 10
积分 645
帖子 1120
活跃指数 76
LU金币 2674 个
LU金条 0 个
阅读权限 210
注册 2003-10-1
来自 南京
 
发表于 2008-3-26 18:00  资料  个人空间  短消息  加为好友  添加 蓝色的忧郁 为MSN好友 通过MSN和 蓝色的忧郁 交谈 QQ
转字CSDN

最近一直做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代理的程序.
呵呵,终于搞定这个http程序了.

注:我的开发环境:symbian 7.0s+vc++6.0
   测试手机:NOKIA6670





关注于c/c++,symbian c++的开发
对UNIX/Linux下的c开发也有兴趣

MSN: lee_vincent83615@hotmail.com
QQ:  3603108
顶部
蓝色的忧郁
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
禁止发言


UID 274
精华 10
积分 645
帖子 1120
活跃指数 76
LU金币 2674 个
LU金条 0 个
阅读权限 210
注册 2003-10-1
来自 南京
 
发表于 2008-3-26 18:02  资料  个人空间  短消息  加为好友  添加 蓝色的忧郁 为MSN好友 通过MSN和 蓝色的忧郁 交谈 QQ
给你编辑了一下标题,便于搜索,也方便后面学习的人.





关注于c/c++,symbian c++的开发
对UNIX/Linux下的c开发也有兴趣

MSN: lee_vincent83615@hotmail.com
QQ:  3603108
顶部
 



当前时区 GMT+8, 现在时间是 2008-10-11 15:13
乐悠LoveUnix论坛-京ICP备05005823号

Thanks to Discuz!  © 2001-2007    Power by LoveUnix.net
Processed in 0.052978 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 乐悠LoveUnix - Archiver