I am wanting to call a Classic ASP web service from PHP.
Here is the service:
<%
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 = 开发者_如何学JAVANothing
Set xmlhttp = Nothing
%>
I want to call this service from PHP in non-WSDL mode. How can I do this? How do I call a specific function within the service?
Here is how I am trying to call the service from 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();
?>
Thanks...
Try using $client->__soapCall()
: http://us3.php.net/manual/en/soapclient.soapcall.php.
I don't believe you can use direct method calls in non-WSDL mode.
Edit:
Also, your web service in .asp is not returning any content. A webservice doesn't actually call a method like Test() on the server. SOAP is merely a protocol for language-agnostic communication of calls and parameters. The server needs to actually take the call and apply it to the proper intended method.
精彩评论