你可以轻松地从SoapClient切换到梨的Soap_Client

时间:2017-03-28 01:37:31

标签: php soap pear

我最近更改了主机,发现它们只支持Pear的Soap_Client类,而不支持标准的PHP SoapClient类,而在我进行切换之前在论坛中说的相反。是否有一种特定的语法可以轻松地从一种语言切换到另一种语法?我不熟悉PEAR Soap_Client类来了解足以进行转换的差异。因此,即使两者之间的明确区分也将受到高度赞赏。我已经基于此运行了几个类/功能/方法,而且此时必须切换主机是相当浪费的。提前谢谢!

修改

以下是我称之为课程的小片段:

        try {
        $soapClient = new SoapClient(
            $this->webserviceWsdl,
            array(
                'exceptions'    => 1,
                'trace'             => 1
            )
        );
    } catch (SoapFault $fault) {
        return json_decode(json_encode(array('status' => 'invalid', 'msg' => "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})")),1);
    }

    try {   
        $soapClient->__setLocation(str_replace(
            '%%foo%%',
            $this->responseConfig['foo'],
            $this->webserviceEndpoint
        ));
    } catch (SoapFault $fault) {
        return json_decode(json_encode(array('status' => 'invalid', 'msg' => "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})")),1);
    }

    try {
        $soapClient->__setSoapHeaders($this->buildSoapHeader($function));  
        return $soapClient->__soapCall($function, array($params));
    } catch (SoapFault $fault) {
        return json_decode(json_encode(array('status' => 'invalid', 'msg' => "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})")),1);
    }

1 个答案:

答案 0 :(得分:0)

不,没有简单的方法可以让您的代码使用PEAR的SoapClient类而不是PHP的内置类。他们的API太不同了。

那就是说,你不应该使用PEAR的SOAP客户端库,因为它没有维护。

尝试说服托管商在他们的服务器上安装php-soap软件包 - 这并不难。