从PHP调用经典ASP Web服务

时间:2011-02-17 17:02:55

标签: php web-services

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

我想在非WSDL模式下从PHP调用此服务。我怎样才能做到这一点?如何在服务中调用特定功能?

以下是我尝试从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();
?> 

...谢谢

1 个答案:

答案 0 :(得分:0)

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

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

修改

此外,.asp中的Web服务未返回任何内容。 Web服务实际上并没有在服务器上调用类似Test()的方法。 SOAP仅仅是用于与调用和参数进行语言无关的通信的协议。服务器需要实际接听电话并将其应用于正确的预期方法。