使用CURL for SOAP是一种不好的做法吗?

时间:2012-04-25 09:18:18

标签: php python soap curl

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

1 个答案:

答案 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就可以了。