2017-08-17 70 views
0

我試圖在php中構建SOAP webservice,但我有一些問題 我試圖在屏幕上打印一個xml頭,以便檢查web服務團隊是否有效。從新的SoapClient打印xml

我以這種方式創建它:

class WsseAuthHeader extends SoapHeader 
{ 
    private $wss_ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'; 
    private $wsp_ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText'; 
    private $wsu_ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'; 

    function __construct($user, $pass) 
    { 

     $auth = new stdClass(); 
     $auth->username = new SoapVar($user, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns); 
     $auth->password = new SoapVar($pass, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wsp_ns); 

     $username_token = new stdClass(); 
     $username_token->UsernameToken = new SoapVar($auth, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wsu_ns); 

     //echo "<pre>"; print_r($username_token); exit(); 

     $security_sv = new SoapVar(
      new SoapVar($username_token, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wss_ns), 
      SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'Security', $this->wss_ns); 
     parent::__construct($this->wss_ns, 'Security', $security_sv, true); 
    } 
} 

然後,我嘗試調用Web服務和打印的xml:

$client = new SoapClient("http://xxxxxx?wsdl", array('trace' => 1)); 
$client->__setSoapHeaders(Array(new WsseAuthHeader("myuser", "mypass"))); 

$result = $client->myfunction(51000286); 
echo "REQUEST:\n" . $client->__getLastRequest() . "\n"; 

我php.net手冊中看到__getLastRequest(),但它不工作 我只能看到「java.lang.NullPointerException」

有沒有另一種方法? 我需要生成的XML檢查與webservice球員。

在此先感謝

+0

好吧,讓我們看看我們是否能夠把事情說清楚。我認爲你想在PHP中構建一個客戶端,該客戶端使用另一個團隊「webservice guys」構建的Web服務。 如果是這樣的話,你將會完成相當多的任務。我可以解釋如何去做,但在此之前,我首先必須知道這是否是你想要的。 – RWC

+0

我需要看到xml頭,因爲他們告訴我,xml頭是空的,我不這麼認爲。我想,我的功能應該生成一個「SoapHeader」,我想這是一個xml – Alex

+0

不,這可能不是你應該做的。呦只是應該調用一個Web服務的方法(與你的客戶端,你必須建立),然後你可以調查你喜歡的任何東西。喲不應該真的關心標題。如果您可以看到Web服務WSDL,則可以向Web服務發送請求,並且您將收到一個答案,該答案將包含一個標題並且不會爲空......爲什麼'webservice guys'會告訴您標題是空的?什麼頭? – RWC

回答

0

我可以解決使用:

$client = new SoapClient("http://xxxxxxx?wsdl", array('trace' => 1,'exceptions'=>0));