0

我公司有一个软件使用 PHP 中的 curl 通过 SOAP 协议定期与一些 Web 服务连接。有时这会失败,整个系统非常不稳定。看到 curl 作为与这些 web 服务对话的主要工具,我有点惊讶,因为我认为大多数语言(包括 PHP 和 python)都存在健壮和成熟的高级库,并且 curl 相对低级并且不提供任何错误处理。我对吗?通过 SOAP 进行通信的最佳解决方案是什么?我可以遵循一些企业标准吗?请帮忙。

4

1 回答 1

0

SOAP 客户端中构建的 PHP 已经非常健壮,并且抽象了许多常用的东西:

$this->soapClient = new SoapClient($wsdl_url);
// What interface is available, which function can you call?
var_dump($this->soapClient->__getFunctions());

// Call
$result = $this->soapClient->someMethodExposedByTheApi();

// Soap Elements (Tags in the XML) are available as properties:
echo $result->someProperty;

// Nested Tags are available as object chain:
echo $result->someNestedTags->nestedTag;

我无法想象它怎么能更简单......

如果您需要设置 SOAP 服务,您可能需要使用 Zend_Soap,它是 Zend 框架中的一个独立组件,它会自动构建基于 wsdl 的 Web 服务。它还在 PHP 的 SoapClient 之上有一个包装器,但这主要用于将命名和编码约定收敛到 Zend 框架,并且不提供太多附加功能。

但是:如果您有非常具体的要求,Curl 是可以的。如果它不时出现故障并且您的系统不稳定,那么这不是 curl 的问题。这可能是服务或系统的错误配置。

基本上,SoapClient 构建基于标准的 XML。如果您为自己构建 XML(无论出于何种原因),curl 都可以。

于 2012-04-25T10:01:41.690 回答