首页 文章

如何使用SoapClient发送ISO-8859-1 XML文件?

提问于
浏览
0

我正在使用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的替代方案?

1 回答

  • 0

    就像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);
    

相关问题