gpt4 book ai didi

php - 如何从 PHP 发布 SOAP 请求

转载 作者:IT王子 更新时间:2023-10-29 00:48:17 25 4
gpt4 key购买 nike

有人知道如何从 PHP 发布 SOAP 请求吗?

最佳答案

根据我的经验,事情并没有那么简单。内置 PHP SOAP client不适用于我们必须使用的基于 .NET 的 SOAP 服务器。它提示无效的模式定义。即使 .NET 客户端与该服务器一起工作也很好。顺便说一句,让我声明 SOAP 互操作性是一个神话。

下一步是 NuSOAP .这工作了很长一段时间。顺便说一句,看在上帝的份上,不要忘记缓存 WSDL!但即使使用 WSDL 缓存,用户仍提示这该死的东西太慢了。

然后,我们决定使用裸 HTTP,使用 SimpleXMLElemnt 组合请求并读取响应,如下所示:

$request_info = array();

$full_response = @http_post_data(
'http://example.com/OTA_WS.asmx',
$REQUEST_BODY,
array(
'headers' => array(
'Content-Type' => 'text/xml; charset=UTF-8',
'SOAPAction' => 'HotelAvail',
),
'timeout' => 60,

),
$request_info
);

$response_xml = new SimpleXMLElement(strstr($full_response, '<?xml'));

foreach ($response_xml->xpath('//@HotelName') as $HotelName) {
echo strval($HotelName) . "\n";
}

请注意,在 PHP 5.2 中,您将需要 pecl_http,因为(惊喜!)没有内置 HTTP 客户端。

使用裸 HTTP 使我们在 SOAP 请求时间上减少了 30% 以上。从那时起,我们将所有性能投诉重定向到服务器人员。

最后,我推荐后一种方法,而不是因为性能。我认为,一般来说,在像 PHP 这样的动态语言中,所有 WSDL/类型控制没有任何好处。您不需要花哨的库来读取和写入 XML,以及所有 stub 生成和动态代理。您的语言已经是动态的,SimpleXMLElement 工作得很好,而且非常易于使用。此外,您将拥有更少的代码,这总是好的。

关于php - 如何从 PHP 发布 SOAP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/471115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com