如何在Windows8应用程序中向HttpWebRequest添加标头?
我正在开发C#\ XAML metro-ui应用程序。 我想调用一些服务并为此使用HttpWebRequest
。 HttpWebRequest
先前实现包含ContentLength
和UserAgent
属性。 但WinRT的实现没有它。 我试图使用这篇文章中描述的方法。 它适用于UserAgent
但不适用于ContentLength
。 我试过设置Headers
request.Headers["Content-length"] = Length; request.Headers["User-agent"] = UserAgent;
但收到exception“必须使用适当的属性或方法修改’Content-length’标头。”
Hot是否可以在WinRT中实现HttpWebRequest
中的Headers
设置?
HttpWebRequest
在WinRT下具有半弃用状态。 以前可以在早期.NET平台上修改的某些标头值不能再用它修改。
似乎HttpClient
是HttpWebRequest的新的和改进的替代品,具有简单的API和完全异步支持。
由于您要指定Content-Length,我假设您正尝试向服务器POST或PUT。 在这种情况下,您需要根据需要使用PostAsync()或PutAsync()。
var req = new HttpClient(); req.DefaultRequestHeaders.Add("User-agent", UserAgent); req.DefaultRequestHeaders.Add("Content-length", Length); return await req.PostAsync(RequestURL, Body);
您可能不需要指定Content-length标头,因为这些方法将根据Body的实际长度自动包含它,但您可以尝试使用它。