1

Java (JaxB) クライアントから .NET WebService に接続しています。オブジェクトの 1 つのフィールドに SQL のような文字列を渡そうとしています。オブジェクトの他のフィールドは、問題なくシリアル化されているようです。何らかの理由で、この SQL クエリにより、サーバーは例外をスローします。

ネットワーク経由で送信されたペイロードの内容は次のとおりです...

uniquedata.name='2012' OR extract(epoch from (uniquedata.createdDate - to_timestamp('2012', 'YYYY/MM/DD HH/MI/SS')) < 24 * 60 * 60 OR extract(epoch from (uniquedata .modifiedDate - to_timestamp('2012', 'YYYY/MM/DD HH/MI/SS')) < 24 * 60 * 60

興味深いのは < エスケープ シーケンスの存在です。

javax.xml.ws.soap.SOAPFaultException: サーバーは要求を読み取ることができませんでした。---> XML 文書にエラーがあります (1, 1073)。---> フィルター文字列に無効な文字が含まれています: uniquedata.name='2012' OR extract(epoch from (uniquedata.createdDate - to_timestamp('2012', 'YYYY/MM/DD HH/MI/SS')) < 24 * 60 * 60 OR extract(epoch from (uniquedata.modifiedDate - to_timestamp('2012', 'YYYY/MM/DD HH/MI/SS')) < 24 * 60 * 60

例外は、これらが適切にエスケープされていないことを示しています。それでも、私はこれらが犯人であると予想しています。そこで、(1,1073) インデックスを元のリクエストと関連付けてみましたが、元のパケットとは似ていません。< 記号のエスケープ解除、xml ヘッダーの削除、soap エンベロープなども試しましたが、うまくいきませんでした。

次に何を試すべきか?

4

1 に答える 1

1

クエリが正しく送信されており、エラーをスローしていたのはサービス内のコードであることが判明しました。

于 2012-06-22T10:52:20.000 に答える