我正在开发C#\XAML metro-ui应用程序。我想调用某些服务,并为此使用HttpWebRequestHttpWebRequest的先前实现包含ContentLengthUserAgent属性。但是WinRT的实现没有它。我试图使用post中描述的方法。它适用于UserAgent,但不适用于ContentLength
我尝试设置Headers

request.Headers["Content-length"] = Length;
request.Headers["User-agent"] = UserAgent;

但是收到了异常“必须使用适当的属性或方法来修改'Content-length'头”。

可以在WinRT中实现的Headers中设置HttpWebRequest吗?

最佳答案

在WinRT下,HttpWebRequest具有半弃用的状态。某些以前可以在较早的.NET平台上修改的 header 值不再无法使用它进行修改。

似乎 HttpClient 是具有简单API和完全异步支持的HttpWebRequest的新改进版。

由于您要指定Content-Length,因此我假设您正在尝试将某些内容发布或放置到服务器上。在这种情况下,您将需要适本地使用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 header ,因为这些方法会根据Body的实际长度自动将其包含在内,但是您可以尝试使用任何一种方法。

关于c# - 如何在Windows 8应用程序中向HttpWebRequest添加 header ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10960358/

10-13 01:02