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