使用 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 是有效的。

相關內容