我必须与只接受http GET请求的SOAP服务器接口(使用POST导致'错误请求'错误)。
我无法在文档PHP文档中找到任何关于如何抓住这些内容的东西我试图使用stream_context设置请求标头
$soap_client = new SoapClient($wsdl,
array(
"trace" => $trace,
"exceptions" => $exceptions,
'proxy_host' => $proxyHost,
"proxy_port" => $proxyPort,
"soap_version" => SOAP_1_2,
'stream_context' => stream_context_create(array('http' => array("header" => "request: GET")))
));
没有成功。有没有人知道我在使用SoapClient时如何强制获取http获取请求?
答案 0 :(得分:0)
我已经完成了一些研究,并且我发现GET请求是在SOAP 1.2中引入的,但一般情况下,SOAP不支持GET请求。
我认为在某些情况下可能会有解决方法。这不是直截了当的解决方案,因为没有那么多问题可以解决。
SOAP通过POST发送数据。在GET请求中,您只能使用URL并将任何参数包装到变量,如
http://server.domain/path/file.php?var1=value1&var2=value2&etc=etc
因此,如果SOAP只接受GET,那就很奇怪,但是如果你知道,你可以传递变量xml中的数据,你可以尝试通过URL发送它:
http://server.domain/path/file.php?xml=encoded_data
如果那是真的(我不确定)那么你可以使用SOAP客户端,然后转储请求,如下所示:http://www.herongyang.com/ws/php_soap_2.html
echo("\nDumping request headers:\n" . $client->__getLastRequestHeaders());
echo("\nDumping request:\n" . $client->__getLastRequest());
echo("\nDumping response headers:\n" . $client->__getLastResponseHeaders());
echo("\nDumping response:\n" . $client->__getLastResponse());
然后"编码"来自$ client-> __ getLastRequest()的xml,将其传递给URL并通过curl发送。