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裏提供的那麼多的方法,就知道怎麼去放送請求,而後獲取返回的數據了。獲取以後,想怎麼樣就怎樣了。

相關文章
相關標籤/搜索