2011-02-17 129 views
1

我想從PHP調用經典ASP Web服務。從PHP調用經典ASP Web服務

這裏的服務:

<% 
    Response.Buffer = True 
    Response.ContentType = "text/xml" 

    Set xmldom = Server.CreateObject("Microsoft.XMLDOM") 
    Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP") 

Sub Test() 
    returnXML = "" 
    returnXML = returnXML & "<SOAP:Envelope xmlns:SOAP=""urn:schemas-xmlsoap-org:soap.v1"">" 
    returnXML = returnXML & "<SOAP:Body>" 
    returnXML = returnXML & "<message>" 
    returnXML = returnXML & "<theword>Hello</theword>" 
    returnXML = returnXML & "</message>" 
    returnXML = returnXML & "</SOAP:Body>" 
    returnXML = returnXML & "</SOAP:Envelope>" 

    Response.Write(returnXML)  
End Sub 

    Set xmldom = Nothing 
    Set xmlhttp = Nothing 
%> 

我想打電話從PHP以非WSDL模式這項服務。我怎樣才能做到這一點?如何在服務中調用特定的功能?

這裏是我想從PHP調用服務:

<?php 
    $client = new SoapClient(
       null, array(
         'location' => "http://server/folder/server.asp", 
         'uri'  => "http://test-uri/", 
         'style' => SOAP_DOCUMENT, 
         'use'  => SOAP_LITERAL, 
         'trace'=>1 
        ) 
     ); 

     $result = $client->Test(); 
     $client->__getLastResponse(); 
?> 

謝謝...

+0

如果您可以控制服務器和客戶端,並且它們是ASP和PHP,那麼爲什麼不使用自己的通信API而不是SOAP呢?另外,我相信在那裏有傳統的ASP SOAP Web服務的庫。 – mellamokb 2011-02-17 22:29:03

回答

0

嘗試使用$client->__soapCall()http://us3.php.net/manual/en/soapclient.soapcall.php

我不相信你可以在非WSDL模式下使用直接方法調用。

編輯:

此外,在.asp的Web服務並不返回任何內容。 webservice實際上並不在服務器上調用像Test()這樣的方法。 SOAP僅僅是用於調用和參數的與語言無關的通信的協議。服務器需要實際接聽電話並將其應用於正確的預期方法。

+0

謝謝......我試過這個,但我仍然沒有成功。 – Eric 2011-02-17 19:33:33