6

jqueryでSOAPリクエストをサードパーティに送信しようとしましたが、常にこのエラーが発生しました:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Problems creating SAAJ object model</faultstring></soap:Fault></soap:Body></soap:Envelope>

私が行った方法は、それらのトークンに基づいてSOAPリクエストを作成する別の関数にいくつかのトークンを渡すことです。トークンの 1 つは、次のような Html 文字列です。

<tr><td width="2" bgcolor="#ffffff"><\/td><td width="1" bgcolor="#d8dbe3"><\/td><td width="2" bgcolor="#ffffff"><\/td><td width="15" bgcolor="#f5f6f8"><\/td><td width="535" bgcolor="#f5f6f8"><table width="535" cellspacing="0" cellpadding="0" border="0" bgcolor="#f5f6f8"><tr><td width="80"><table width="80" height="96" bgcolor="#999999" cellspacing="0" cellpadding="0" border="0" align="center"><tr><td width="80" height="1" colspan="3"><\/td><\/tr><tr><td width="1" bgcolor="#999999"><\/td>....

このトークンを追加するたびに、SOAP リクエストが失敗しました。この html 文字列トークンをエスケープしようとしましたが、SOAP リクエストは成功しましたが、文字列全体がエスケープされたすべての文字で台無しになり、サード パーティはテンプレートをレンダリングするためにこの html 文字列を必要とするため、エスケープされたバージョンを送信できません。リクエストをクラッシュさせずに HTML 文字列を安全に渡す方法はありますか?

4

2 に答える 2

8

エラー「SAAJ オブジェクト モデルを作成する際の問題」は通常、サーバー側で SOAP 要求を解析できない場合に発生します。サーバー上のログファイルには、次のようなものが表示されます

Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '>' (code 62) (expected a name start character)
 at [row,col {unknown-source}]: [18,6]

html タグを soap エンベロープに渡すため、html-tags のエスケープに問題が生じる可能性があります。この種のデータについては、soap-request 内で BASE64 文字列を渡すことをお勧めします。

于 2015-03-17T16:49:50.203 に答える
0

「Content-type text/xml;charset=utf-8」のようなヘッダーを追加してください。

于 2019-07-03T02:33:54.147 に答える