2

私は、PHP と 2 つのネイティブ スマートフォン アプリ (ios と android) によってクエリされる Soap ベースの Web サービスを使用するプロジェクトに取り組んでいます。

ここに問題を再現するための簡単なスクリプトがあります

<?php
error_reporting(E_ALL);
$url          = 'http://www.xxxxx.com/service.awws?wsdl'; 

$sKey    = 'thekey';

$client= new SoapClient($url, array('trace' => 1,
                                   'exception' => 1,
                                   'encoding'      => 'UTF-8',
                                   'cache_wsdl' => WSDL_CACHE_NONE));


$params = array('sKey' => $sKey, 'nLangID' => 1);

$res      = $client->TPGetLocalisationVersion($params);

echo '<pre>Res : ';
print_r($res);
echo '</pre>';

?>

次のエラーが表示されます。

Fatal error: Uncaught SoapFault exception: 
[HTTP] Unable to parse URL in /home/xxxx/www/test.php:14 Stack trace: #0 [internal function]: 
SoapClient->__doRequest('__call('TPGetLocalisati...', Array) #2 /home/tmpweb/www/test.php(14): 
SoapClient->TPGetLocalisationVersion(Array) #3 {main} thrown in /home/xxxx/www/test.php on line 14 

メソッド TPGetLocalisationVersion が存在し、パラメータが正しい。このコードは、数日前に機能していました。

wget を使用して、PHP Web サーバーから wsdl をフェッチすることもできます。

いくつかのオンライン ツールで WSDL ファイルをテストしましたが、問題ないようです。

これをデバッグするための提案はありますか? 専用サーバー上にあり、php.ini で WSDL キャッシュを完全に無効にしているため、WSDL がキャッシュされていないと確信しています。

4

1 に答える 1

5

問題は解決しました。問題は WSDL 内の soap:address にありました (不正な値)

于 2013-03-07T14:42:50.180 に答える