发布使用Curl发布的SOAP包装的XML导致无效的XML字符被发现异常


2

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

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

尝试解决问题

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

虽然已更新驻留在XML文件中的版本:

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

curl似乎继续将XML作为1.0版发送。

第二次尝试解决问题

另一种尝试是更改使用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是有效的。


0x61是字母“a”,所以它在所有版本中都有效,所以是XML。我想你可能会因为XML版本的改变而咆哮错误的树。您是否确认XML不仅无效(错误/不完整标记)?如果您创建一个包含所需内容的新XML,它会上传好吗?
Ƭᴇcʜιᴇ0072015年

如果Notepad ++(也)告诉您XML无效,那么这很可能是您的问题,您的XML无效。修复它以使其成为有效的XML并再试一次。
Ƭᴇcʜιᴇ0072015年

@Ƭᴇcʜιᴇ007抱歉。我弄错了。Notepad ++表示它是有效的。
2015年

听起来不错。让我们知道您的结果(将操作和结果编辑到您现有的问题中)。
Ƭᴇcʜιᴇ0072015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.