如何对HttpWebRequest和HttpWebRsponse异步调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对HttpWebRequest和HttpWebRsponse异步调用相关的知识,希望对你有一定的参考价值。
参考技术A 异步,比如,小李让小张帮忙去打饭,这时小李不知道小张何时回来,在这段时间内小李可以做一些其他的事情,只是小张打饭回来了通知小李就ok。所以异步就是接收方不知道发送方什么时候发送,所以发送的信息中就要有提示接收方开始接收信息的。如何在Windows 8应用程序中向HttpWebRequest添加标头?
我正在开发C# XAML metro-ui应用程序。我想打电话给一些服务,并为此使用HttpWebRequest
。以前对HttpWebRequest
的实现包含ContentLength
和UserAgent
属性。但是WinRT的实现没有它。我试图使用这个post中描述的方法。它适用于UserAgent
但不适用于ContentLength
。我试过设置Headers
request.Headers["Content-length"] = Length;
request.Headers["User-agent"] = UserAgent;
但收到异常“必须使用适当的属性或方法修改'Content-length'标头。”
热门是否可以在WinRT中实现Headers
中的HttpWebRequest
?
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的实际长度自动包含它,但您可以尝试使用它。
以上是关于如何对HttpWebRequest和HttpWebRsponse异步调用的主要内容,如果未能解决你的问题,请参考以下文章
如何对HttpWebRequest和HttpWebRsponse异步调用
C# HttpWebRequest - 如何在不下载的情况下区分 HTML 和 XML 页面?