从PHP调用经典ASP Web服务

问题描述:

我想从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

尝试使用$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