我正在使用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的替代方案?
就像Constantin GALBENU指出的那样,使用SoapClient无法做到这一点 . 我不得不使用cURL,在内容类型 Headers 发送charset:
$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);
1 回答
就像Constantin GALBENU指出的那样,使用SoapClient无法做到这一点 . 我不得不使用cURL,在内容类型 Headers 发送charset: