我正在使用SOAP方法,该方法需要使用ISO-8859-1编码的XML内容。我尝试将其直接添加为方法参数,但SoapClient返回编码错误:
SOAP-ERROR:编码:字符串'<?xml version =“1.0” encoding =“ISO-8859-1”?>(...)'不是有效的utf-8字符串
如果我将XML内容转换为UTF-8,则SOAP服务器无法识别XML内容。
使用SoapClient的任何解决方案? 任何使用cURL的替代方案?
答案 0 :(得分:0)
就像Constantin GALBENU指出的那样,使用SoapClient无法做到这一点。 我不得不使用cURL,在内容类型标题发送字符集:
$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);