web-dev-qa-db-ja.com

WebClient Content-Typeヘッダーを設定する方法

サードパーティのサービスに接続するには、Https Postを作成する必要があります。必須セットの1つは、カスタムコンテンツタイプを送信することです。

WebClientを使用していますが、設定方法がわかりません。新しいクラスを作成してCreateRequestメソッドをオーバーライドしようとしましたが、そのリクエストがクラッシュしました。

CopyHeadersToメソッドを書き換えずにそれを行う方法はありますか?

[〜#〜] edit [〜#〜] CopyHeaderToは、.NET Reflectorを使用して確認したメソッドです。 GetWebRequestから呼び出され、プライベートプロパティからContent-Typeを含むすべてのリクエストヘッダーを設定します。

22
MaLKaV_eS

さて、私はちょうど逃したRequest.ContentTypeプロパティ。 GetWebRequestメソッドがオーバーライドされている場合は、ContentTypeを目的の値に設定してください。

それでも、サードパーティへの接続が機能していません。図を行きます。

1
MaLKaV_eS

Headers コレクションに追加してみてください。

myWebClient.Headers.Add("Content-Type","application/xxx");
43
Darin Dimitrov
webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
13
V K

私もこれに遭遇しました。そして、クライアントHttpを使用する必要があることがわかりました。それ以外の場合、ブラウザHttpはセキュリティ上の理由からContent-Typeの変更をブロックします。 このMSDNリンク 説明してください。

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);
client.Headers["Content-Type"] = "application/json";
3
bob dawson