GyPSii API - PHP请求示例

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

对方提供的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方法里加上:this

 

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

请求示例:spa

 

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函数来处理,将须要的数据提取出来,而后本身处理就行了。.net

服务器的返回信息,用$http->responseBody,便可得到,$http是什么,可看code

http://my.oschina.net/onlyfu/blog/8002xml

因而就有:$xml=simplexml_load_string($http->responseBody);blog

输出$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里提供的那么多的方法,就知道怎么去放送请求,而后获取返回的数据了。获取以后,想怎么样就怎样了。

相关文章
相关标签/搜索