GyPSii API - PHP请求示例

根据GyPSii API提供的操作类和方法,发现请求会失败,返回的是一个bed request。原因其实很简单,但一直没有找到,最终原因是对方提供的host是错误的,没天理。

对方提供的host和uri:

host:http://dev3.gypsii.com/gypsii
uri:http://dev3.gypsii.com/gypsii/xmlservice.cgi

这个host就是错的,应该是:dev3.gypsii.com  =。=!!

GyPSiiXMLRPC这个方法也是有问题的,只直利用API里写的是不行的,仔细看这个类会发现有一个makeUri,用这个方法处理一下传递 的 uri就可以了,也就是GyPSiiXMLRPC方法里加上:


$uri   =   $this -> makeUri(  $uri  );

请求示例:

 

代码
include   " client.php " ;
$http   =   new  Net_HTTP_Client();
$uri = " http://dev3.gypsii.com/gypsii/xmlservice.cgi " ;
$host = " dev3.gypsii.com " ;
$body = u();
$http -> connect(  " $host " ,   80  ) or  die " connect problem "  );
$http -> GyPSiiXMLRPC(  $uri ,   $host ,   $pid ,   $body );
/* 登录信息
username:用户名
password:密码
*/
function  u(){
    
return   " <?xml version='1.0' encoding='utf8'?><request service='com:gypsii:service:security:SecurityService' method='login' version='1.1.0'><param name='username'><string>8619901111111</string></param><param name='password'><string>1111</string></param></request> " ;
}

 

运行后,成功服务器会返回所请求的相关信息,当然回来的也是一个xml格式的,这个时候用simplexml_load_string函数来处理, 将需要的数据提取出来,然后自己处理就好了。

服务器的返回信息,用$http->responseBody,即可获得,$http是什么,可看http://blog.csdn.net /Onlyfu/archive/2010/04/29/5544343.aspx

于是就有:$xml=simplexml_load_string($http->responseBody);

输出$xml是一个数组,通过$xml->xpath可以取到想要的值,如:$user_id=$xml-> xpath("//field[@name='USER_ID']");这个可以取到关于USER_ID的信息,但它仍然是一个数组,跟着这样就可以取到 我们想要的user_id了,$userid=$user_id[0]->long;如果不知道这个是怎么回事,把$user_id输出来看看就知 道,每个数据都有不同的数据类型,user_id是long所以它最后是$iser_id[0]->long,换一个就不是这个了,比如我们要输入 KEY(GyPSii登录时生成的值):$result = $xml->xpath("//field[@name='SECURITY_KEY']");$key=$result[0]->string;

这里明白了,看看API里提供的那么多的方法,就知道怎么去放送请求,然后获取返回的数据了。获取之后,想怎么样就怎样了。


 

你可能感兴趣的:(PHP)