是否有人知道在Windows Phone 8上设置或读取HTTP GET请求中的“日期”HTTP标头的方法?
我需要能够设置Date标头的值,或者至少读取将在请求中实际发送的值。
我尝试过类似的事情:
var web_request = HttpWebRequest.CreateHttp(url);
web_request.Headers["Date"] = the_date;
但是这会在运行时产生异常: System.ArgumentException:必须使用适当的属性或方法修改“Date”标头。
这里有使用HttpClient的示例代码,但在Windows Phone 8中显然不可用: How do you set the Content-Type header for an HttpClient request?
我也尝试过阅读日期,但之后:
var web_request = HttpWebRequest.CreateHttp(url);
日期似乎尚未确定。
答案 0 :(得分:2)
添加“Microsoft HTTP Client Libraries”后效果很好。 但是,WindowsPhone平台上的这个库仍然存在问题。
问题:
我有一个场景,我想以特定格式添加“Date”标题,所以我使用了
string customDate =“11/29/2013 7:46:25”
DefaultRequestHeaders.TryAddWithoutValidation(“Date”,customDate);
上面的行添加了“Date”标题,这意味着它不会抛出任何异常,但是当我在fidler中检查时,没有添加“Date”标题。相同的代码在Windows8商店应用程序中运行良好。
看起来WindowsPhone8平台的“Microsoft HTTP Client Libraries”中存在错误。
答案 1 :(得分:1)
通过使用“Microsoft HTTP Client Libraries”for Date标头很好,如果Date是DateTime对象,那么如果我想以特定格式为Date标头赋值,那么它就不会得到加入。
答案 2 :(得分:0)
它是一个内置支持的标题,您需要明确设置/获取;
web_request.Date = DateTime.UtcNow;
(默认为01/01/0001 00:00:00
,但未在请求中发送)
答案 3 :(得分:0)
问题:
web_request.Date
是Windows Phone 8版本的HttpWebRequest中没有“Date”属性。 请参阅:http://social.msdn.microsoft.com/Forums/windowsapps/en-US/5738e95a-5afe-4a49-929d-b51490a5480b/httpwebrequest-date-property-missing
在此链接中建议使用HttpClient和HttpRequestMessage。例如:
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);
request.Headers.Date = DateTime.Now.Subtract(new TimeSpan(10, 0, 0));
HttpResponseMessage response = client.SendAsync(request).Result;
string resultCode = response.StatusCode.ToString();
我被卡住了,因为HttpClient和HttpRequestMessage似乎也不适用于Windows Phone 8。但是可以添加它们:
在Windows Phone的Visual Studio(Express)2012中: 工具 - >库包管理器 - >管理NuGet包以获得解决方案......
然后搜索“Microsoft HTTP Client Libraries”并安装它。 之后,System.Net.Http可用,并且可以使用HttpClient解决方案。