簡體   English   中英

使用帶文檔/文字包裝的NuSoap PHP調用SOAP客戶端

[英]Call SOAP client using NuSoap PHP with Document/literal wrapped

我正在嘗試進行SOAP調用,但是有很多問題。

我正在使用這個:

$client = new nusoap_client('http://odigo.xxx.com/xxx/servlet/services/WebCallBack?wsdl'); 
$client -> setEndpoint('https://odigo2.xxx.com/xxx/servlet/services/WebCallBack.WebCallBackHttpSoap11Endpoint/'); 

$client->soap_defencoding = 'UTF-8';

error message:
$error = $client->getError();

if ($error) {
die("client construction error: {$error}\n");
}

$param = array('skillKeyWord' => 'yyy',
             'phoneNumber' => '999999999',
             'user' => 'XXX',
             'password' => 'XXX',
            );
$result = $client->call('saveCallBack', array('parameters' => $param), '', '', false, true);

客戶的IT部門告訴我,請求是錯誤的,因為:“需要使用文檔/文字包裝,未編碼”和“參數包裝錯誤”

他們向我們發送的正確電話就是以下示例:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <saveCallBack xmlns ="http://odigo.xxx.com/2009/09/21/webcallback.xsd" xmlns:ns2="http://webcallback.ws.bean.model.odigo.xxx.com/xsd" xmlns:ns3="http://administration.bean.model.odigo.xxx.com/xsd">
         <webCallBack>
            <ns2:date>0</ns2:date>
            <ns2:phoneNumber>9999999</ns2:phoneNumber>
            <ns2:skillKeyWord>yyy</ns2:skillKeyWord>
         </webCallBack>
         <user>
            <ns3:login>XXX</ns3:login>
            <ns3:password>XXX</ns3:password>
         </user>
      </saveCallBack>
   </soap:Body>
</soap:Envelope>

我不知道如何使用nusoap發送此格式調用,或使用此XML使用nusoap進行調用。

任何幫助其贊賞。

嘗試使用CURL 代碼如下所示:

$soap_body   = '<?xml version="1.0" encoding="utf-8"?>'.
            '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'.
                '<soap:Body>'.
                    '<saveCallBack xmlns ="http://odigo.xxx.com/2009/09/21/webcallback.xsd" xmlns:ns2="http://webcallback.ws.bean.model.odigo.xxx.com/xsd" xmlns:ns3="http://administration.bean.model.odigo.xxx.com/xsd">'.
                        '<webCallBack>'.
                            '<ns2:date>0</ns2:date>'.
                            '<ns2:phoneNumber>9999999</ns2:phoneNumber>'.
                            '<ns2:skillKeyWord>yyy</ns2:skillKeyWord>'.
                        '</webCallBack>'.
                        '<user>'.
                            '<ns3:login>XXX</ns3:login>'.
                            '<ns3:password>XXX</ns3:password>'.
                        '</user>'.
                    '</saveCallBack>'.
                '</soap:Body>'.
            '</soap:Envelope>'; 

$headers = array
( 
   'Content-Type: text/xml; charset="utf-8"', 
   'Content-Length: '. strlen($soap_body), 
   'Accept: text/xml', 
   'Cache-Control: no-cache', 
   'Pragma: no-cache'
);

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, 'http://odigo.xxx.com/xxx/servlet/services/WebCallBack?wsdl'); 
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $soap_body); 

$result = curl_exec($ch);
//do something useful with $result variable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM