PHP 以 SOAP 方式调用接口

起因

最近做了一个项目,需要和其他公司进行接口调试,该公司的开发工程师是搞java的,然后接口都是soap形式的,自己以前没有用过soap,都是json格式数据接口,通过查看文档,以及各种谷歌,自己搞了一个soap的公用方法用来调试soap接口,特此记录一下。

代码

    public function WsSoapClient($wsdl, $filter, $funName, $ccuser = null){
        $client = new \SoapClient($wsdl,array('trace' => 1));
        try {
            if (! empty($ccuser)) {
                $str = '';
                foreach ($filter as $v) {
                    $str = $str . $v;
                }
                $str = 加密方法处理
                $ns = 'http://xxxxx.com';
                $var = new \SoapVar('<auth:authenticate xmlns:auth="http://www.xxxx.com">
                    <cc>' . $ccuser['cc'] . '</cc>
                    <sign>' . $str . '</sign>
                </auth:authenticate>', XSD_ANYXML);
                $header = new \SoapHeader($ns, 'authenticate', $var);
                $client->__setSoapHeaders($header);
            }
            if ($filter) {
                $result = $client->$funName($filter);
            } else {
                $result = $client->$funName();
            }
            $result = get_object_vars($result);
        } catch (SoapFault $fault) {
            echo "Fault! code:", $fault->faultcode, ", string: ", $fault->faultstring;
        }
        return json_encode($result['return']);
    }

后续

因为调用过程中,对方一直要我给出请求报文,我开始并不知道怎么打印出请求报文,后来查阅了一些资料才找到方法。

$client->__getLastRequest();//获取最后一次请求的报文
$client->__getLastResponse();//获取最后一次的返回报文
本作品采用《CC 协议》,转载必须注明作者和本文链接
人生的意义在于承担人生无意义的勇气
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!