在过去的几天里,我一直在使用SOAP。我无法理解如何正确构建SOAP enveloppe以发送到wsdl Web服务。我已尝试使用php和节点中的函数,js和i最终遇到了同样的问题。
问题是:我可以访问服务器,但似乎我没有发送足够的信息,因为Web服务总是返回false。
这是我需要的xml结构:
POST /2010/11/************.asmx HTTP/1.1
Host: url.url.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://***********/*******/2010/11/*************/**********"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Function1 xmlns="http://**********.com/*************/2010/11">
<Function1Request xmlns="http://******.com/********/2010/11">
<param1>string</param1>
<param2>string</param2>
</Function1Request>
</Function1>
</soap:Body>
</soap:Envelope>
这是我在php中的表现:
<?php
$param1 = 'foo';
$param2 = 'bar';
try
{
$url = "https://******.com/2010/11/*******.asmx?wsdl";
$client = new SoapClient(¢url,array("trace"=> 1,"exception"=>0,"encoding"=>"UTF-8"));
$params = array(
"param1" => $param1,
"param2" => $param2
);
$options = array(
"SOAPAction" => "http://***********/*******/2010/11/*************/**********",
);
$response = $client->__soapCall("Function1",$params,$options);
var_dump($response);
}
catch(Exception $e)
{
echo $e;
}
基本上,Web服务不处理我的调用并返回false。 就像我说的那样,我确实在node.js中尝试了相同的结果。
编辑: 这是Web服务的答案:
object(stdClass)[2]
public 'Function1Response' =>
object(stdClass)[3]
public 'IsAuthenticated' => boolean false
public 'FleetOwnerID' => int 0
这是获取最后一次请求的结果:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://*****.com/services/2010/11">
<SOAP-ENV:Body>
<ns1:Function1/>
<param1/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
这是我的请求标题:
POST /2010/11/*****.asmx HTTP/1.1
Host: url.url.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/7.0.15
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://***********/*******/2010/11/*************/**********"
Content-Length: 242
最后,响应头:
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 May 2017 15:15:20 GMT
Content-Length: 485
我发送的请求并不像他们要求的那样。我需要帮助才能正确构建它。