この問題は、1日中私を殺しています。Soapクライアント、基本HTTP認証でHTTPS経由で関数を呼び出す方法
私はクライアントのWebサービスのhttps持って:私は、Webサービスに接続するためにSOAPUIを使用する場合は、すべてがエラーなしで完璧に動作します。..基本HTTP認証で、
を// *の.asmx WSDL?を全く...(私はPHPを使用しています、私はPHPに切り替えたときに問題がある
...
は、私はそれに接続するために管理され、私は、PHPのためのSoapClient拡張子を使用してサーバからの機能のリストを取得することができます5.3.0)。
私はPHPのためのSoapClient拡張子を使用して関数を呼び出すようにしようとすると、私は次のエラーを取得:
Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in C:\www\xpto_Atestes\soapclient.php:26 Stack trace: #0 [internal function]: >SoapClient->__doRequest('***...', 'http://****...', 1, 0) #1 >C:\www\xpto_Atestes\soapclient.php(26): SoapClient->__soapCall('login', Array) #2 {main} >thrown in C:\www\xpto_Atestes\soapclient.php on line 26
より明確なエラー(私はコールの結果をしますprint_rを行う):
を送信されている次のヘッダーで[faultstring] => Error Fetching http headers
[faultcode] => HTTP
:
POST /*.asmx HTTP/1.1 Host: *.pt Connection: Keep-Alive User-Agent: >PHP-SOAP/5.3.0 Content-Type: text/xml; charset=utf-8 SOAPAction: "http://**/Login" >Content-Length: 264 Authorization: Basic AUTHSECRETPASS
が、私はこのようにそれを呼んでいます。
Error
HTTP Error: socket read of headers timed out
Request
POST /**.asmx HTTP/1.0 Host: *.pt User-Agent: NuSOAP/0.9.5 (1.123) Content-Type: text/xml; charset=ISO-8859-1 SOAPAction: "http://****/Login" Authorization: Basic AUTHSECRETPASS Content-Length: 481
NUMBERPASSWORD
Response
私はそれを呼んでいる:
$soapParams = array('login' => 'HTTP_LOGIN',
'password' => 'HTTP_PASS',
'authentication' => SOAP_AUTHENTICATION_BASIC,
'trace' => 1,
'exceptions' => 0
);
$client = new SoapClient("https://****.asmx?WSDL", $soapParams); echo "Connected
"; $params = array('account' => '', 'msisdn'=>'NUMBER', 'password'=>'PASSWORD'); $result = $client->__soapCall("login", $params);
しばらくはグーグルで、問題が何ができるかを調べるために試みた後、私は...私の悲惨さにもエラーを与えたnusoapに切り替えこのように:
:nusoapで$client = new nusoap_client("https://**.asmx?WSDL", true);
$client->setCredentials('HTTPUSER','HTTPPASS','basic');
$params = array( 'account' => '', 'msisdn'=>'NUMBER', 'password'=>'PASSWORD' );
$result = $client->call('Login', $params);
私はまた、呼び出しを行うためにカール拡張子をイネーブルしてみました
しかし、そのような運、それはエラーを与えることに保た:
HTTP Error: cURL ERROR: 56: Failure when receiving data from the peer url: http://*********.asmx
content_type:
http_code: 0
header_size: 0
request_size: 750
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 21.015
namelookup_time: 0
connect_time: 0
pretransfer_time: 0
size_upload: 462
size_download: 0
speed_download: 0
speed_upload: 21
download_content_length: -1
upload_content_length: -1
starttransfer_time: 0
redirect_time: 0
私はドン何の問題もなくSOAPUIからそれを呼び出すことができる場合、私は、何もWebサービスと間違っていないことを100%確信しています」なぜ私はPHPから呼び出すことができないのか分かりません。
I結集...もっと私は..私は、私はすべてを試みだと思う何ができるのか分からない
編集:私はちょうど... PHP、Zendのから今回のために別のソープクラスを試してみました
結果は次のとおりです。
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://**.asmx?WSDL' : failed to load external entity "https://*.asmx?WSDL" in C:\www\xpto_Atestes\Zend\Soap\Client\Common.php:51 Stack trace:
#0 C:\www\xpto_Atestes\Zend\Soap\Client\Common.php(51): SoapClient->SoapClient('https://**...', Array)
#1 C:\www****_Atestes\Zend\Soap\Client.php(1032): Zend_Soap_Client_Common->__construct(Array, 'https://**...', Array)
#2 C:\www****_Atestes\Zend\Soap\Client.php(1188): Zend_Soap_Client->_initSoapClientObject()
#3 C:\www***_Atestes\Zend\Soap\Client.php(1112): Zend_Soap_Client->getSoapClient() #4 [internal function]: Zend_Soap_Client->__call('Login', Array)
#5 C:\www****_Atestes\zend.php(28): Zend_Soap_Client->Login(Array)
#6 {main} thrown in
こんにちはティオ 私は は、あなたはそれが仕事を得るために管理しました、(成功せず、ZendのとNuSoapてみてください)正確に同じ問題を抱えていますか?ありがとうございます。 Yv。 –
@yjusot ..まあ、私は、WebサービスのWSDLであるNuSoapで問題を解決することができました。さまざまなフィールドに接頭辞が付いている必要がありました.NuSoapはそれらを入れませんでした。接頭辞はフィールドには必要ですが、$ client-> sendメソッドを使用することをお勧めします。このメソッドでは、要求XMLをパラメータとして渡します。このようにして、何かを変更する必要はありません。 – Tio
あなたの回避策/解決策のもう少し詳細を教えてもらえますか?つまりプレフィックスは何ですか? –