質問

単純な質問がありますが、まったく理解できないようです。

状況は次のとおりです。

  • WSE 3 を使用してリクエストを作成し、Web サービスに送信します。
  • Web サービスは Java で書かれています。

ほとんどのことは問題ありませんが、WebResuest または WebResponse の ContentType に影響を与えることができないようで、それがいくつかの問題を引き起こしています。

表示され続けるエラーメッセージは次のとおりです。

クライアントは、応答コンテンツ タイプ「application/xop+xml;type="text/xml;」を検出しました。charset=utf-8" ' ですが、'text/xml' が必要です。リクエストは次のエラー メッセージで失敗しました。....

エラー メッセージの詳細には、サーバーからの呼び出しに対する応答が含まれており、正しく受信されています。例外を通過しているため、現時点では明らかにそれは良くありません:)。

では、応答に期待されるコンテンツ タイプを設定するにはどうすればよいでしょうか?

私の考えが正しければ、WSE 3.0 のリクエストとレスポンスは同じ ContentType を持つ必要があります。そこで、 request.Headers[HttpRequestHeader.ContentType] を期待どおりに設定しようと考えましたが、うまくいきませんでした。(また、かなり多くの場所で HttpWebRequest の contenttype を設定できますが、どれもうまく機能しないようです)

役に立ちましたか?

解決

これは幸いにも解決されているので、ここで将来の参照のためのソリューションです。

私たちのクライアントはGetWebResponse(..)と呼ばれる方法がありますするWebServicesClientProtocolクラスから継承します。 単にそのメソッドをオーバーライドし、応答のContentTypeをを変更することは、私たちのために動作するように見えます。

    protected override WebResponse GetWebResponse(System.Net.WebRequest request)
    {
        WebResponse response = base.GetWebResponse(request);
        response.Headers[HttpResponseHeader.ContentType] = "text/xml";
        return response;
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top