2
我花了一個星期尋找一個我能理解的答案。我對網絡開發世界相當陌生。PHP SOAP屬性.net網絡服務
我的問題在於生成肥皂消息,要求設置屬性中的值以及元素本身。
以下是我嘗試創建的SOAP消息的簡化示例。
客戶端= PHP
服務器= .NET
SOAP消息需要:
<PingRequest EchoToken="string">
<EchoData>string</EchoData>
</PingRequest>
WSDL部分
<s:element name="PingRequest" type="s0:PingRequest" />
<s:complexType name="PingRequest">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="EchoData" type="s:string" />
</s:sequence>
<s:attribute name="EchoToken" type="s:string" />
</s:complexType>
我花了很多努力,以瞭解如何使一個類和其他對象傳遞給web服務,但是,我的大腦讓我失望。道歉,如果我的問題有點模糊。這是我在嘗試調用我的web服務:
<?php
//connection to wsdl
$client = new SoapClient('http://localhost/ws.asmx?wsdl',
array( "trace" => 1,
"exceptions" => 0
));
try {
// Ping = Function
// PingRequest = method?
$result = $client->PingRequest(array('EchoData' => 'moo'));
} catch (SOAPFAULT $f){
}
echo "\n The Result: \n";
print_r($result);
print "<pre>";
print "Request :\n".htmlspecialchars($client->__getLastRequest()) ."\n";
print "Response:\n".htmlspecialchars($client->__getLastResponse())."\n";
print "</pre>";
;
?>
請求:
<ns1:PingRequest>
<ns1:EchoData>moo</ns1:EchoData>
</ns1:PingRequest>
任何幫助是豎起了大拇指。
編輯: 感謝麗莎:我能夠創建一個類這樣的:但我仍然不明白
class PingRequest {
public $EchoData; // string
public $EchoToken; // string
public $TimeStamp; // dateTime
public $Target; // PingTarget
public $Version; // decimal
public $TransactionIdentifier; // string
public $SequenceNmbr; // nonNegativeInteger
public $TransactionStatusCode; // PingRequestStatusCode
public $RetransmissionIndicator; // boolean
}
變得很容易。謝謝
創建一個名稱爲webservice類的新類變量,然後爲您希望傳遞的每個元素或屬性創建stdclasses。 (必須使用類生成麗莎提供。
謝謝麗莎,我要去看看如何使用這些類與我的客戶...你認識的任何有用的文章? – goingsideways 2011-01-06 06:41:27