2012-02-10 97 views
1

我有這個類來發送SOAP請求(類還定義了頭)肥皂沒有得到正確發送,需要得到請求

class Personinfo 
{ 
    function __construct() { 
     $this->soap = new SoapClient('mysource.wsdl',array('trace' => 1)); 
    } 

    private function build_auth_header() { 
     $auth->BrukerID = 'userid'; 
     $auth->Passord = 'pass'; 
     $auth->SluttBruker = 'name'; 
     $auth->Versjon = 'v1-1-0'; 

     $authvalues = new SoapVar($auth, SOAP_ENC_OBJECT); 
     $header = new SoapHeader('http://www.example.com', "BrukerAutorisasjon", // Rename this to the tag you need 
     $authvalues, false); 

     $this->soap->__setSoapHeaders(array($header)); 
    } 

    public function hentPersoninfo($params){ 

     $this->build_auth_header(); 
     $res = $this->soap->hentPersoninfo($params); 
     return $res; 
    } 
} 

的問題是,有什麼錯我的功能和該響應是一個錯誤。我想知道我的請求中包含哪些內容,但我無法弄清楚。

我試過try/catch-block在hentPersoninfo函數中調用$this->soap->__getLastRequest,但它總是空的。

我在做什麼錯?

+0

什麼是錯誤?錯誤來自哪裏?如果它來自您發送的服務器,則解析錯誤響應。如果你想知道你要發送什麼,請嘗試wireshark – KevinDTimm 2012-02-10 12:51:51

回答

5

在我開始以編程方式開始訪問服務之前,我使用SoapUI來確保我知道發送給服務的需求以及我應該期待的內容。

這樣,您就可以確保問題不在Web服務中和/或在您瞭解如何訪問Web服務時。

在瞭解了這一點之後,您可以將注意力集中在使相關SOAP框架完成您所需的操作。

+0

好主意,我會看看它 – OptimusCrime 2012-02-10 12:54:01

+0

SoapUI或TCPMon(http://ws.apache.org/commons/tcpmon/)可以提供幫助。第二個吸引流量,並像代理一樣行事,所以它顯示請求和他們的迴應 – Alfabravo 2012-02-10 13:08:00

+1

忘記接受這個答案,所以我有點晚了,但SoapUI是輝煌的。我建議每個人都用肥皂請求搞亂。 – OptimusCrime 2013-04-28 02:17:34

0

要快速找出要發送給服務器的內容,可以將客戶端指向自己的本地服務器。關於到SoapClient文檔,你可以設置一個服務器位置是這樣的:

$soap = new SoapClient(null, array('location' => "http://localhost/soap.php", 
            'uri'  => "http://test-uri/")); 

然後你就可以在你的本地soap.php腳本中使用類似print_r($_REQUEST)