php支持soap的版本号,在PHP中进行SOAP调用并设置SSL版本

这篇博客介绍了如何处理Oracle服务器上的SOAP客户端请求,特别是在遇到必须使用SSL2的情况下。作者通过创建一个名为StupidWrapperForOracleServer的类,重写了__doRequest方法,使用cURL库来实现强制使用SSL2的HTTP请求。当WSDL文件下载失败时,建议手动下载并存储在本地以供使用。这个解决方案有助于解决与SSL版本不兼容导致的SOAP通信故障。
摘要由CSDN通过智能技术生成

我有同样的问题,以下包装解决了(我不得不强制SSL2)

class StupidWrapperForOracleServer extends SoapClient {

protected function callCurl($url, $data, $action) {

$handle = curl_init();

curl_setopt($handle, CURLOPT_URL, $url);

curl_setopt($handle, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml", 'SOAPAction: "' . $action . '"'));

curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);

curl_setopt($handle, CURLOPT_POSTFIELDS, $data);

curl_setopt($handle, CURLOPT_SSLVERSION, 2);

$response = curl_exec($handle);

if (empty($response)) {

throw new SoapFault('CURL error: '.curl_error($handle),curl_errno($handle));

}

curl_close($handle);

return $response;

}

public function __doRequest($request,$location,$action,$version,$one_way = 0) {

return $this->callCurl($location, $request, $action);

}

}

顺便说一句.如果在下载WSDL文件部分时失败,则手动下载WSDL(例如使用卷曲),并在本地使用该文件.在WSDL下载阶段,不调用IMHO __doRequest.

file_put_contents(dirname(__FILE__) .'/Server.wsdl',get_wsdl()); //get_wsdl uses the same wrapper as above

$oWS = new StupidWrapperForOracleServer(dirname(__FILE__) .'/Server.wsdl',array('trace'=>1,'cache_wsdl'=>0));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值