我公司有一块软件通过SOAP协议定期与一些web服务连接,使用PHP中的curl。这种情况有时会失败,整个系统也会非常不稳定。看到curl作为与这些web服务交谈的主要工具,我有点惊讶,因为我认为大多数语言(包括PHP和python)存在健壮且成熟的高级库,而curl是相对较低级别的,并且不提供任何错误处理。我对吗?通过SOAP进行通信的最佳解决方案是什么?我可以遵循一些企业标准吗?请帮忙。
答案 0 :(得分: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 Framework中的独立组件Zend_Soap,它自动构建基于wsdl的Web服务。它还在PHP的SoapClient之上有一个包装器,但它主要用于将命名和编码约定聚合到Zend Framework,并且不提供额外的功能。
但是:如果您有非常具体的要求,可以使用Curl。如果它不时失败并且您的系统不稳定,那么这不是卷曲的问题。这可能是对服务或系统的错误配置。
SoapClient基本上是基于标准构建XML。如果您自己构建XML(无论出于何种原因),curl就可以了。