使用 Curl 发布包装在 SOAP 中的 XML 会导致出现“发现无效 XML 字符”异常

使用 Curl 发布包装在 SOAP 中的 XML 会导致出现“发现无效 XML 字符”异常

使用 curl 发送 XML 文件会导致:

Invalid XML character (Unicode : 0x<integer>)

尝试解决问题

根据这个答案如果 XML 版本更改为 1.1,该问题将得到解决。

尽管 XML 文件中的版本已更新:

<?xml version="1.1" encoding="utf-8" standalone="yes"?>

curl 似乎一直以 1.0 版本发送 XML。

第二次尝试解决问题

另一种尝试是使用 curl 更改发布时使用的标头,如下所示:

curl -X POST -H "Content-Type: text/xml; charset=utf-8; version=1.1"

Curl 似乎忽略了这一点,因为输出表明使用了 xml 版本 1.0:

* Closing connection #0
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope

第三次尝试解决问题

@Ƭᴇcʜιᴇ007 建议创建一个小型 XML 文件:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<soap:Envelope
    xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
    <soap:Body>
        <note>
            <to>Test</to>
        </note>
    </soap:Body>
</soap:Envelope>

验证语法并随后发布:

An invalid XML character (Unicode : 0x<integer>) was found

第四次尝试解决问题

根据这个答案0x<integer_greater_than_20>由于大于 0x20,因此该问题不应该发生。

第五次尝试解决问题

代表什么0x<integer_greater_than_20>?根据这张桌子它代表了似乎可以接受的拉丁字符。

第六次尝试解决问题

也许 XML 文件无效?不,根据 Notepad++ 的“立即检查 XML 语法”选项,XML 是有效的。

相关内容