MTK平台下使用socket实现http通讯

1.移动代理服务器


IP:10.0.0.172 port:80

 

2.MTK socket接口


1)soc_create创建socket接口
2)soc_setsockopt设置socket option
3)soc_connect建立连接,在这里连接的对像是代理服务器10.0.0.172
4)soc_send发送信息
5)soc_recv接收信息
6)非阻塞模式,手机平台通讯都是非阻塞模式,因此soc_connect和soc_recv一般不会马上返回成功,而是返回SOC_WOULDBLOCK.意思是要等待一会儿,.所以我们要调用SetProtocolEventHandler来设置回调函数.

 

3.http格式


一个的HTTP请求格式如下:
GET http://www.google.cn HTTP/1.1/r/n
Host: www.google.cn/r/n
Proxy-Connection: Keep-Alive/r/n
/r/n

GET后面是请求的文件,Host后面是请求的域名.每行都以/r/n结束.最后还必须有一个空行.一般情况下请求包只有包头,没有包体.

一个的HTTP响应消息格式如下:
HTTP/1.1 200 OK [ZTEOSE]/r/n
Server: ZTEOSE/r/n
Date: Tue, 15 Jul 2008 04:50:08 GMT/r/n
Server: WebLogic Server 8.1 SP3 Tue Jun 29 23:11:19 PDT 2004 404973 with CRs:/r/n
Set-Cookie: jid=L8sQcQ71W0!225012077; path=//r/n
Content-Length: 494/r/n
Content-Type: text/vnd.wap.wml;charset=UTF-8/r/n
/r/n
(数据....)

通常,移动响应的第一个包是重定向,如下所示:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
<meta http-equiv="Cache-Control" content="no-cache" forua="true"/>
<meta http-equiv="Cache-Control" content="must-revalidate" forua="true"/>
</head>
<card id="card" title="" >
<onevent type="onenterforward">
<go href="http://www.google.cn:80/?t=08458"></go></onevent>
</card>
</wml>

其中http://www.google.cn:80/?t=08458就是要重定向的URL,客户端接到这个包之后要重新发一个请求包,而且把
GET http://www.google.cn HTTP/1.1/r/n
改成:
GET http://www.google.cn:80/?t=08458 HTTP/1.1/r/n
之后就能得到想要的数据了.

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值