根据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方法里加上:
请求示例:
运行后,成功服务器会返回所请求的相关信息,当然回来的也是一个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里提供的那么多的方法,就知道怎么去放送请求,然后获取返回的数据了。获取之后,想怎么样就怎样了。