簡體   English   中英

PHP 5.3.6 SoapClient :: __ doRequest():SSL:由對等方重置連接

[英]PHP 5.3.6 SoapClient::__doRequest(): SSL: Connection reset by peer

我正在努力在php 5.3.6中使用.net web服務。 我正在使用SoapClient類來建立連接。 它繼續失敗“ SoapClient :: __ doRequest():SSL:連接由對等重置 ”和“ SoapFault對象([消息:受保護] =>錯誤獲取http標頭 ”。

這種情況僅發生在方法/操作中。 如果我使用$ response = $ objClient - > __ getFunctions(); 它工作正常,我得到的答案沒有問題。

$objClient = new SoapClient("http://sample.idws.syndication.kbb.com/3.0/VehicleInformationService.svc?wsdl", array('trace' => 1, 'username' => 'xxxxxxx', 'password' => 'xxxxxxx', 'soap_version' => SOAP_1_2, 'exceptions' => true )); 

PHP:php 5.3.6啟用了ssl soap。
操作系統:Ubuntu 11.10

過去幾個月我一直面臨類似的問題。 事后證明問題是當我使用非wsdl模式http://php.net/manual/en/soapclient.soapclient.php時 ,遠程服務器偶爾會響應wsdl位置的請求。

初始非wsdl模式

    $soapx = new SoapClient(null,
            array(
        "trace" => true,
        'cache_wsdl' => WSDL_CACHE_NONE,
        'location' => 'http://remote_wsdl_url',
        'uri' => 'http://necessary_uri',
        'use' => SOAP_LITERAL,
        'style' => SOAP_DOCUMENT,));

轉向wsdl模式

    $soapx = new SoapClient('http://remote_wsdl_url_turned_to_local',
            array(
        "trace" => true,
        'cache_wsdl' => WSDL_CACHE_NONE,));

似乎SOAP服務器端存在問題。 用於調試SOAP的最佳在線客戶端是soapclient,您可以嘗試一下。

由於同樣的問題,我最近遇到了這個問題。 對我們來說,問題在於使用SSL協議。 我們不得不強迫TLS 1.1,一切都開始嗡嗡作響。 我們這里的關鍵工作組件是'crypto_method'。

$wsdl = 'PATH/TO/WSDL';
$url = 'http://URL_TO_SOAP_SERVICE';
$cert = 'PATH/TO/CLIENT/CERT';

$context = stream_context_create([
    'ssl' => [
        'crypto_method' =>  STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT,
        'verify_peer' => true,
        'verify_peer_name' => true,
        'allow_self_signed' => false,
        'cafile' => '/path/to/cafile.selfsigned'
    ]
]);

$params = [
    'location' => $url,
    'local_cert' => $cert,
    'trace' => true,
    'exceptions' => true,
    'verifypeer' => true,
    'verifyhost' => true,
    'allow_self_signed' => false,
    'connection_timeout' => 180,
    'keep_alive' => false,
    'stream_context' => $context
];

$client = new SoapClient($wsdl, $params);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM