WSE 3.0 セットのコンテンツ タイプ
-
06-09-2019 - |
質問
単純な質問がありますが、まったく理解できないようです。
状況は次のとおりです。
- 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;
}