2017-03-21 53 views
0

我正在使用一種SOAP方法,期望使用ISO-8859-1編碼的XML內容。我試圖直接將其添加爲方法參數,但返回SoapClient的編碼錯誤:如果我的XML內容轉換爲UTF-8的SOAP服務器無法識別XML內容如何使用SoapClient發送ISO-8859-1 XML文件?

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

使用SoapClient的任何解決方案? 使用cURL的任何替代方法?

+0

根據官方的文檔,你可以不作爲編碼始終是UTF-8'的編碼選項定義內部字符編碼。此選項不會更改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);