gpt4 book ai didi

c# - 为什么在 C# 中创建 WebRequest 时未设置 Date header ?

转载 作者:行者123 更新时间:2023-11-30 17:21:55 25 4
gpt4 key购买 nike

今晚我开始了一个小项目,试图创建一个 C# 库来访问 Google Storage API .当您向 Google Storage API 创建任何类型的请求时,您必须在网络请求中包含“日期” header 。

我尝试在 C# 中创建一个 WebRequest,并注意到我无法手动设置“日期” header 。根据this MSDN page ,Date 属性应该由系统自动设置。

由于缺少“日期” header ,我对 Google 的请求失败了。 Fiddler 确认我的请求中没有发送 Date header 。

这是我正在使用的代码片段:

WebRequest webRequest;
webRequest = WebRequest.Create("http://commondatastorage.googleapis.com");

String auth = "GOOG1 " + m_accessKey + ":" + CreateSignature();

webRequest.Headers.Add("Authorization", auth);
webRequest.ContentType = "text/html";

Stream objStream;
objStream = webRequest.GetResponse().GetResponseStream();

知道会发生什么吗?为什么 Date header 没有随我的 Web 请求一起发送?

最佳答案

根据文档,HttpWebRequest.Date属性默认为 DateTime.MinValue,不会随请求发送 Date header 。

所以要设置它,你需要做的就是......

HttpWebRequest webRequest;
webRequest = (HttpWebRequest)WebRequest.Create("http://commondatastorage.googleapis.com");

webRequest.Date = DateTime.UtcNow;

关于c# - 为什么在 C# 中创建 WebRequest 时未设置 Date header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3099479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com