织梦CMS - 轻松建站从此开始!

罗索

MTK平台用Socket实现HTTP请求总结

落鹤生 发布于 2010-07-22 11:22 点击:次 
公司做了一个小型的wap浏览器的项目,其中涉及到用socket的实现http请求的方法,由于网上相关资料比较少,尤其是详细的资料比较少,所以走了不少弯路。在此仅从实现的角度说明MTK平台用Socket实现HTTP的方法,希望能给后来者一些微小的帮助。
TAG:

公司做了一个小型的wap浏览器的项目,其中涉及到用socket的实现http请求的方法,由于网上相关资料比较少,尤其是详细的资料比较少,所以走了不少弯路。在此仅从实现的角度说明MTK平台用Socket实现HTTP的方法,希望能给后来者一些微小的帮助。

一、MTK平台Socket联网过程
熟悉PC机编程的人都知道,Socket编程接口分两套:TCP和UDP;TCP和UDP中又有服务器端和客户端的概念,这里讲的是TCP的客户端编程接口。

MTK平台中Socket创建步骤:

         1、soc_create()  创建Socket;

         2、soc_setsockopt  设置Socket为非阻塞模式;

         3、soc_setsockopt  设置Socket选项为连接,读,写,关闭;不清楚为什么要连续设置两次,如有高人路过,请指点;

        4、如果是CMNET联网并且请求中用到了英文域名还需要解析域名soc_gethostbyname,除非使用ip作为域名,解析出来的IP作为我们建立连接的目标IP;如果是CMWAP联网,直接跳到第5步,直接连接移动或联通的网关:10.0.0.172:80;

        5、soc_connect与服务器建立连接;

        6、soc_send    发送请求;

        7、soc_recv     接收服务器返回的数据;

        8、soc_close    关闭Socket;

        9、如果需要关闭数据账户soc_close_nwk_account

二、CMNET,CMWAP方式下的HTTP请求内容格式
HTTP请求格式:

GET方法

MTK模拟器中wap浏览器发送的请求内容

“GET /go_13596557 HTTP/1.1

Host: kong.net

User-Agent: SQH_D480B_01/LB19504/WAP2.0 Profile

Accept:  application/vnd.wap.wmlc, **  //(想当长,省去后面部分)

Accept-Charset: utf-8, utf-16, iso-8859-1, iso-10646-ucs-2, GB2312, windows-1252, us-ascii

Accept-Language: zh-tw, zh-cn, en

Cookie: JSESSIONID=aAQP0FIXp3z7

Connection: Keep-Alive



POST方法

对一些需要向服务器传入参数的请求,按名称搜索等请求。还以空中网天气查询为例,之中的其他城市天气查询,输入其他城市名称或电话区号查询:

“POST /weather/search.jsp?setcity=1 HTTP/1.1

Host: kong.net

User-Agent: SQH_D480B_01/LB19504/WAP2.0 Profile

Accept: application/vnd.wap.wmlc, */*  //(想当长,省去后面部分)

Accept-Charset: utf-8, utf-16, iso-8859-1, iso-10646-ucs-2, GB2312, windows-1252, us-ascii

Accept-Language: zh-tw, zh-cn, en

Content-Type: application/x-www-form-urlencoded; charset=utf-8

Cookie: KONG_ACCESS=AWYZhg==; JSESSIONID=a91MDc6qoMYf

Connection: Keep-Alive

Content-Length: 46//get方法没有这一项

××××××//传给服务器46字节长的数据(参数)



当然如果是CMWAP联网方式也要和上述的GET方法一样设置Host和X-Online-Host项,Host:10.0.0.172

X-Online-Host: kong.net

以上的内容,可以在调试状态下运行模拟器的wap浏览器,在soc_send方法处插入断点观察。

HTTP的其他方法,由于在应用中没有用到,在这里不做介绍。

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201007/9864.html]
本文出处:网络博客 作者:秩名
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容