Curl を使用して投稿された SOAP でラップされた XML を投稿すると、無効な XML 文字が見つかったという例外が発生します。

Curl を使用して投稿された SOAP でラップされた XML を投稿すると、無効な XML 文字が見つかったという例外が発生します。

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 として送信し続けているようです。

問題解決の2度目の試み

もう 1 つの試みは、curl を使用して投稿中に使用されるヘッダーを次のように変更することでした。

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

出力には xml バージョン 1.0 が使用されていることが示されているため、Curl はこれを無視しているようです。

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

問題解決の3回目の試み

@Ƭᴇ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

問題解決のための4回目の試み

によるとこの答え0x<integer_greater_than_20>0x20 より大きい場合、問題は発生しないはずです。

問題解決の5回目の試み

何を0x<integer_greater_than_20>表しているか?このテーブル許容されると思われるラテン文字を表します。

問題解決のための6回目の試み

XML ファイルが無効である可能性がありますか? いいえ、Notepad++ の [XML 構文を今すぐチェック] オプションによると、XML は有効です。

関連情報