5

我正在开发 C#\XAML metro-ui 应用程序。我想调用一些服务并为此使用HttpWebRequest。以前实现HttpWebRequest包含ContentLengthUserAgent属性。但是 WinRT 的实现没有它。我尝试使用这篇文章中描述的方法。它适用于UserAgent但不适用于ContentLength. 我试过设置Headers

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

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

Hot 是否可以在 WinRTHeaders中实现?HttpWebRequest

4

1 回答 1

12

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

这似乎HttpClient是 HttpWebRequest 的新改进替代品,具有简单的 API 和完整的异步支持。

由于您要指定 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 标头,因为这些方法会根据 Body 的实际长度自动包含它,但是您可以尝试任何一种方式。

于 2012-06-12T17:11:39.053 回答