我在使用SOAP运行方法时遇到问题。我正在使用Apache和PHP。通过https访问PHP Soap呼叫
这是PHP代码:
$opts = array(
'ssl' => array('ciphers'=>'RC4-SHA')
);
ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);
$client = new SoapClient('https://host?wsdl', array (
'stream_context' => stream_context_create($opts),
"trace" => 1,
"exceptions" => 0,
"connection_timeout"=>2000));
var_dump($client->__getFunctions());
$params = array ("key" => "value");
$result = $client->availabeFunction($params);
var_dump($result);
的__getFunctions()
它返回了我所有的可用功能。
然后,当我试图调用带参数的可用函数。
它返回我strage错误消息:
public 'faultstring' => string 'Could not connect to host' (length=25)
public 'faultcode' => string 'HTTP' (length=4)
所以我相信这是由于一些原因是通过HTTP,而不是通过HTTPS连接。
我抬头看了一下网页,在某些情况下,他们正在使用.pem文件的local_cert
值。
它拥有它吗?或者我错过了别的东西?
这枚“有效”,你绝对**不要**想这样做。为什么?因为'https://'封装器在PHP 5.6之前默认禁用了对等证书验证。通过消除你基本上说过的ssl上下文,*“我不在乎谁是这个转移的另一端,我完全信任他们。”*如果你正在处理数据,你不希望我成为能够阅读或修改这不是正确的解决方案。 – rdlowrey