由于项目中使用http通信,并且服务平台与终端开发不在一个地方,因此,当平台因为某种原因停机,常常就会影响到终端的工作,因此,需要一个最简单的方法搭建一个本地服务器,用来测试终端,我这里使用的终端OS平台是windows mobile。使用PHP来搭建这样一个简单的服务器,用来测试项目中的通信和接口。
首先可以下载一个FleaPHP,这是一个可以自动帮你配置apach+php的集成环境,当然你也可以自己手动配置,那么就要分别下载apach和PHP5,而且配置起来蛮曲折的,主要是把各个主要文件的路经设置妥当。这部分我就不说了。
建一个PHP文件,用来接受处理http通信,代码很简单:
<?php
echo "running";
foreach (getallheaders() as $name => $value)
{
if($name=='action'&&$value=="getContent ")
{
header('HTTP/1.1 200 OK');
header('result-code:0');
header('TimeStamp: 2009-12-15');
header('APIVersion:1.0.0');
header('Content-Type: application/xml;charset=UTF-8');
$file = fopen("getContent.xml","r");
while(!feof($file))
{
echo fgets($file);
}
fclose($file);
}
}
?>
这里用来处理http通信,getContent就是接口名称,action是接口的key,在终端发出http头要定义“action”,”getContent”这样的匹配值!getContent.xml是XML文件,请求的数据都在里面,代码执行完之后会把这个XML的数据发回给终端。这个头会遍历整个请求头,因此请求头不要太啰嗦。另外终端不要试图使用127.0.0.1或localhost这样的地址访问本地服务器。直接使用服务器分配到的IP访问,另外还要注意一点就是大小写的配置,你可以配置不区分大小写,如果不知道配,就直接看往来的数据,看看是否有大小写不匹配的地方。顺带贴一个.vbs文件用来测试服务器:
'写文件
Sub CreateAFile(ByVal httpInfo)
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("E://Bodyfile.txt", True)
MyFile.WriteLine(httpInfo)
MyFile.Close
End Sub
'----------------------------服务器请求-----------------------------------------
Dim httpUrl '定义变量
httpUrl = "http://127.0.0.1:80/mobile.php/portapi"'请求URL
Set objXMLhttp = CreateObject("Microsoft.XMLHTTP") '建立Microsoft.XMLHTTP对象
objXMLhttp.Open "get",httpUrl,false '打开GET/POST连接
'-----------------------设置发送头信息------------------------------------------
objXMLhttp.SetRequestHeader "Content-Type", "application/xml" '内容类型
objXMLhttp.SetRequestHeader "Action", getContent'请求动作(获取系统书签)
'-------------------------------------------------------------------------------
objXMLhttp.send "<Request></Request>" '发送请求数据
CreateAFile(objXMLhttp.ResponseText)'调用子过程写文件
'-----------------------信息长度最大为1024才可以用一下方法显示-----------------
WScript.Echo(objXMLhttp.getAllResponseHeaders)'返回所有头信息
WScript.Echo(objXMLhttp.ResponseText)'返回所以BODY信息
InputBox "欢迎使用服务器接口测试工具","全部头信息",objXMLhttp.getAllResponseHeaders
InputBox "欢迎使用服务器接口测试工具","全部体信息",objXMLhttp.ResponseText