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