我正在使用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?
答案 0 :(得分:1)
使用UnityWebRequest,您无法设置Date
字段的自定义值,请检查docs。
另外,请检查RFC 2616, section 4.2,特别是RFC 2616, section 14.18关于日期标题。另外,请检查RFC 2616 section 3.3.1。
您确定dateTimeString
格式正确吗?