HTTP" date" UnityWebRequest中缺少标头

时间:2016-10-13 22:29:39

标签: unity3d http-headers webrequest

我正在使用Unity3d,我正在尝试向需要Date请求标头的API发送GET请求。

然而,UnityWebRequest不会自动发送它(我已经使用https://requestb.in/进行了检查)并且我无法手动设置它,因为" date"是受保护的标题之一。

UnityWebRequest www = UnityWebRequest.Get (fullURL);

www.SetRequestHeader("Date", dateTimeString);

yield return www.Send();

我收到以下错误:

  

ArgumentException:无法设置请求标头日期 - 名称包含非法字符或不是用户可覆盖的

如果我使用WWW类(允许我手动设置" date"标头),我能够成功地与API通信,但我正在尝试使用UnityWebRequest,因为WWW将很快就会被弃用。

我尝试使用System.Reflection' InternalSetRequestHeader" (如https://forum.unity3d.com/threads/unitywebrequest-cookies.383530/#post-2621262中所实施)如下:

System.Reflection.MethodInfo dynMethod = myReq.GetType ().GetMethod ("InternalSetRequestHeader", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

dynMethod.Invoke (myReq, new object[]{"Date", dateTimeString });

然后我收到以下错误:

  

InvalidOperationException:无法覆盖系统指定的标头

那么,我怎样才能确保" date"请求标题已发送?

是否有解决方案或是否必须使用来自其他库的对象,例如.NET的HttpWebRequest?

1 个答案:

答案 0 :(得分:1)

使用UnityWebRequest,您无法设置Date字段的自定义值,请检查docs

另外,请检查RFC 2616, section 4.2,特别是RFC 2616, section 14.18关于日期标题。另外,请检查RFC 2616 section 3.3.1

您确定dateTimeString格式正确吗?