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 エンベロープなども試しましたが、うまくいきませんでした。
次に何を試すべきか?