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
之后就能得到想要的数据了.