簡體   English   中英

PHP Soap“無法連接到主機”

[英]PHP Soap “Could not connect to host”

連接到路透社TRKD時,我的PHP Soap請求失敗。 不幸的是,它只能在我的本地筆記本電腦上失敗,而相同的請求可以在服務器上運行。

我的第一個猜測是通過Wireshark進行檢查,但是似乎在緩存WSDL文件之后,請求沒有發送到服務端點。

而且只有一個請求失敗,即auth,其余請求在授權后都能正常工作。 可能是什么問題?

php --version

PHP 5.3.10-1ubuntu3 with Suhosin-Patch (cli) (built: Apr 11 2012 17:25:33) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

Ubuntu 12.04

更新:我重載了SoapClient :: __ doRequest方法來轉儲URL和請求。

__DO REQUEST
$request : <?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://www.reuters.com/ns/2006/05/01/webservices/rkd/Common_1" xmlns:ns2="http://www.reuters.com/ns/2006/05/01/webservices/rkd/TokenManagement_1" xmlns:ns3="http://www.w3.org/2005/08/addressing"><env:Header><ns3:To>https://api.rkd.reuters.com/api/2006/05/01/TokenManagement_1.svc/Anonymous</ns3:To><ns3:Action>http://www.reuters.com/ns/2006/05/01/webservices/rkd/TokenManagement_1/CreateServiceToken_1</ns3:Action></env:Header><env:Body><ns2:CreateServiceToken_Request_1><ns1:ApplicationID>BLAH</ns1:ApplicationID><ns2:Username>BLAH</ns2:Username><ns2:Password>BLAH</ns2:Password></ns2:CreateServiceToken_Request_1></env:Body></env:Envelope>

$location : https://api.rkd.reuters.com/api/TokenManagement/TokenManagement.svc/Anonymous
$action : http://www.reuters.com/ns/2006/05/01/webservices/rkd/TokenManagement_1/CreateServiceToken_1
$version : 2
$one_way : 0
SoapFault exception: [HTTP] Could not connect to host in ..

查看其他庫存溢出帖子,我可以看到我已經安裝了ssl。

php -i | grep ssl                                                                                                                             1 ↵
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, tls
openssl

嘗試6小時..這對我有用:'stream_context'=> stream_context_create(array('ssl'=> array('ciphers'=>'RC4-SHA')))!

`$soap = new SoapClient($wsdl, array(
    'login' => $login,
    'password' => $password,
    'exceptions' => true,
    'stream_context' => stream_context_create(array('ssl' => array('ciphers'=>'RC4-SHA'))),
    'trace' => true
    ));`

信息:php.net CURLOPT_SSLVERSION要使用的SSL版本(2或3)。 默認情況下,PHP會嘗試自行確定,盡管在某些情況下必須手動設置。

嘗試:

ini_set("soap.wsdl_cache_enabled", 0);

暫無
暫無

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

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