在HTTP标头中设置或读取日期(Windows Phone 8)

时间:2013-07-31 17:06:12

标签: http windows-phone-8

是否有人知道在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);

日期似乎尚未确定。

4 个答案:

答案 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解决方案。