[英]Soap PHP WSDL XML formatting
因此,我在PHP中使用Soap客戶端,並且嘗試在WSDL上發出請求。 我嘗試具有特定的輸出,但似乎與我嘗試的工作有點不同。 也許我做錯了。 我對WSDL有點陌生。
這是我想要的結果:
<SOAP-ENV:Body>
<loc:sendSms>
<loc:addresses>9000000000</loc:addresses>
<loc:senderName>9000000</loc:senderName>
<loc:message>test SMS</loc:message>
</loc:sendSms>
</SOAP-ENV:Body>
這是我嘗試滿足我的要求的方法,但是以服務器錯誤結束:
$MCIResp = (array) $_soapClient->__soapCall('sendSms',
'sendMessage' => array(
'addresses' => '9000000000',
'senderName' => '9000000',
'message' => 'test SMS '
)
);
這是我從此請求中得到的錯誤:
“ SoapFault異常:[客戶端] SOAP錯誤:編碼:對象沒有'sendmessage'屬性”;
編輯:通過在某些帖子上獲得靈感在此基礎上進行了一些改進
現在是我的代碼:
$_soapClient = new SoapClient(
null,
array(
'location' => 'http://someIP/parlayxsmsgw/services/SendSmsService?wsdl',
'uri' => 'http://someIP/parlayxsmsgw/services/SendSmsService?wsdl',
'trace' => 1,
'cache_wsdl' => WSDL_CACHE_NONE,
'use' => SOAP_LITERAL,
'style' => SOAP_DOCUMENT,
'stream_context' => stream_context_create(array(
'http' => array(
'header' => 'servicekey: someservicekey'
),
)),
)
);
$params = new \SoapVar("<sendSms><addresses>90000000000</addresses><senderName>90000000</senderName><message>test SMS</message></sendSms>",XSD_ANYXML);
然后我做一個
$_soapClient->whatEverNameHereWillBeIgnored($params);
現在是我生成的XML:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<sendSms>
<addresses>989127184955</addresses>
<senderName>98307066</senderName>
<message>test SMS</message>
</sendSms>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
但我收到以下答復:
意外的子元素sendSms
“ loc:”是否必須解決此問題? 因為當我將其添加到原始xml中時,它說
未聲明的名稱空間前綴“ loc”
謝謝,
我強烈建議您使用WSDL到PHP的生成器,例如PackageGenerator ,它將簡化您的請求構造,因此您不必懷疑如何構造請求,這很清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.