如何设置WebClient Content-Type标头?

时间:2009-10-20 16:54:22

标签: c# content-type webclient

要连接到第三方服务,我需要制作一个Https Post。其中一个必备条件是发送自定义内容类型。

我正在使用WebClient,但我找不到如何设置它。我已经尝试创建一个新类并重写CreateRequest方法,但这会导致请求崩溃。

有没有办法做到这一点,而无需重写CopyHeadersTo方法?

提前致谢

编辑 CopyHeaderTo是我使用.NET Reflector看到的一种方法。它从GetWebRequest中取消,并从私有属性设置所有请求标头,包括Content-Type。

4 个答案:

答案 0 :(得分:40)

您可以尝试添加到Headers集合。

myWebClient.Headers.Add("Content-Type","application/xxx");

答案 1 :(得分:10)

webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"

答案 2 :(得分:3)

我也遇到过这个。并且发现必须使用Client Http,否则Browser Http会出于安全原因阻止更改Content-Type。 This MSDN link解释了这一点。

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

答案 3 :(得分:1)

好吧,我只是错过了Request.ContentType财产。如果覆盖GetWebRequest方法,则将ContentType设置为所需的值。

但是,与第三方的连接无效。去图。