2011-01-06 136 views
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。 (必須使用類生成麗莎提供。

回答