0

私は JAX-WS (v2.1.3 - Sun JDK 1.6.0_05) を使用して Web サービスを開発しました。これは、Java クライアント、SoapUI、またはその他の Web サービス テスト ツールを使用すると問題なく動作します。2005 Microsoft SQL Server Reporting Services を使用してこのサービスを利用する必要があるのですが、次のエラーが表示されます

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
            <faultcode>S:Client</faultcode>
            <faultstring>Couldn't create SOAP message due to exception: XML reader error: unexpected character content:
                "?"
            </faultstring>
        </S:Fault>
    </S:Body>
</S:Envelope>

HTTP プロキシを使用して SSRS の送信内容を盗聴すると、投稿本文の先頭に EF BB BF が表示され、JAX-WS はそれを好みません。特殊文字を削除し、Fiddler を使用してリクエストを再送信すると、Web サービスの呼び出しが機能します。

私の質問は、SSRS がこれらの特殊文字を導入する理由と、それを停止するにはどうすればよいかということです。止められない場合、どうすれば JAX-WS にそれらを無視させることができますか? ここに私のSSRSクエリがあります:

<Query>
<Method Name="getOneUser" Namespace="http://vinny.com" >
</Method>
</Query>

以下のようなクエリも試しました。

<Query>
<Method Name="getOneUser" Namespace="http://vinny.com" >
</Method>
 <SoapAction>http://vinny.com/getOneUser</SoapAction>
<ElementPath IgnoreNamespaces="true">*</ElementPath>
</Query>

私が何を試すことができるかについて誰かアイデアがありますか? SOAPBinding などのタイプを変更するために、JAX-WS 側でいくつかの異なるタイプの注釈を試しましたが、Microsoft SSRS で動作させるものはないようです。

4

1 に答える 1

0

「特殊文字」は、投稿本文が UTF-8 であることを示す「バイト オーダー マーカー」(BOM) です。http://unicode.org/faq/utf_bom.html#BOM

Java サービスは、これらの文字を吐き出さないように十分に賢くなければなりません。私はそれを助ける方法がわからないのではないかと心配しています。

于 2009-10-27T21:13:34.317 に答える