1

Reuters TRKD への接続中に PHP Soap リクエストが失敗します。残念ながら、サーバーでは同じリクエストが機能しますが、ローカルのラップトップでのみ失敗します。

私の最初の推測は、Wireshark 経由で確認することでしたが、WSDL ファイルがキャッシュされた後、リクエストがサービス エンドポイントに送信されないようです。

そして、失敗するのは 1 つの要求だけであり、認証、残りは認証後に正常に機能します。問題は何ですか?

php --バージョン

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 ..

他のstockoverflowの投稿を見ると、sslがインストールされていることがわかります。

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

2 に答える 2

1

6時間の試行..これは私にとってはうまくいきます: 'stream_context' => stream_context_create(array('ssl' => array('ciphers'=>'RC4-SHA'))) !

`$soap = new SoapClient($wsdl, array(
    'ログイン' => $login,
    'パスワード' => $パスワード,
    「例外」=>真、
    'stream_context' => stream_context_create(array('ssl' => array('ciphers'=>'RC4-SHA'))),
    'トレース' => true
    ));`

info: php.net CURLOPT_SSLVERSION 使用する SSL バージョン (2 または 3)。デフォルトでは、PHP はこれ自体を決定しようとしますが、場合によっては手動で設定する必要があります。

于 2013-12-12T15:43:58.493 に答える
0

試してみてください:

ini_set("soap.wsdl_cache_enabled", 0);
于 2012-10-22T11:01:31.513 に答える