如何设置WebClient Content-Type标头?
要连接到第三方服务,我需要制作一个Https Post。 其中一个必备条件是发送自定义内容类型。
我正在使用WebClient,但我找不到如何设置它。 我已经尝试创建一个新类并重写CreateRequest方法,但这会导致请求崩溃。
有没有办法做到这一点,而无需重写CopyHeadersTo方法?
提前致谢
编辑 CopyHeaderTo是我见过的使用.NET Reflector的方法。 它从GetWebRequest中取消,并从私有属性设置所有请求标头,包括Content-Type。
您可以尝试添加到Headers集合。
myWebClient.Headers.Add("Content-Type","application/xxx");
webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"
我也遇到过这个。 并且发现必须使用Client Http,否则Browser Http会出于安全原因阻止更改Content-Type。 这个MSDN链接解释了这一点。
WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp); client.Headers["Content-Type"] = "application/json";
好吧,我刚刚错过了Request.ContentType
属性。 如果重写GetWebRequest
方法, GetWebRequest
ContentType
设置为所需的任何值。
但是,与第三方的连接无效。 去搞清楚。