2017-03-21 15 views
0

私は、ISO-8859-1エンコーディングのXMLコンテンツを必要とするSOAPメソッドを使用しています。私は、メソッドのパラメータとして直接それを追加しようとしたが、のSoapClientは、エンコーディングエラーを返します。SoapClientを使用してISO-8859-1 XMLファイルを送信するにはどうすればよいですか?

SOAP-ERROR: Encoding: string '<?xml version="1.0" encoding="ISO-8859-1"?>(...)' is not a valid utf-8 string

私はUTF-8にXMLコンテンツを変換する場合は、SOAPサーバーはXMLコンテンツを認識しません。

SoapClientを使用しているソリューションはありますか? cURLを使用する代替手段はありますか?

+0

エンコーディングは常にUTF-8であるとして、あなたは 'encodingオプションは、内部文字エンコーディングを定義することはできません公式ドキュメントによります。このオプションは、SOAPリクエスト(常にutf-8)のエンコーディングを変更するのではなく、文字列をそれに変換します.':http://php.net/manual/en/soapclient.soapclient.php –

答えて

0

Constantin GALBENUが指しているように、SoapClientを使って行うことはできません。 私はContent-Typeヘッダで文字セットを送信し、代わりにカールを使用していた:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-type: text/xml;charset=iso-8859-1", 
    "Accept: text/xml", 
    "Cache-Control: no-cache", 
    "Pragma: no-cache", 
)); 
$result = curl_exec($ch); 
curl_close($ch); 
関連する問題