0

奇妙な問題があります。PHPSOAPでWebサービスと通信したい。

$soapURL = "http://www.somedomain.com/xyz.asmx?WSDL";
$soapParameters = Array('login' => "123", 'password' => "pwd", 'soap_version' => SOAP_1_2, 'exceptions' => True) ;
$client = new SoapClient($soapURL, $soapParameters);

XAMPP を使用すると、問題なくローカルで動作します。

Web サーバーで試してみると、次のエラー メッセージが表示されます。

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.somedomain.com/xyz.asmx?WSDL' : Input is not proper UTF-8, indicate encoding ! Bytes: 0xFC 0x6C 0x74 0x69 in ...

私のコード例の最後の行でエラーが発生します。

何か案は?

  • mb_detect_encoding($soapURL);文字列がASCII形式であると言います
  • utf8_encodeiconvおよび mb_convert_encodingを使用して、すべての文字列を UTF-8 に変換しようとしました...
  • php ファイルの最初の行は次のとおりです。header('Content-type: text/html; charset=utf-8');
4

1 に答える 1

0

私は最終的にそれを解決しました。問題は、Windows サーバーと Linux クライアントからの通信でした。一部の Linux マシンで動作する理由はわかりませんが、気にしないでください。

ソースにローカル wsdl ファイルを追加し、それを SOAPClient に使用します。サーバーには __setLocation 関数を使用しました。

于 2012-10-30T14:24:18.643 に答える