我正在使用Unity3d,并试图向一个需要日期请求头的API发送一个GET请求。
但是,UnityWebRequest不会自动发送它(我已经与https://requestb.in/检查过了),而且我也不能手动设置它,因为"date“是受保护的标题之一。
UnityWebRequest www = UnityWebRequest.Get (fullURL);
www.SetRequestHeader("Date", dateTimeString);
yield return www.Send();我得到了以下错误:
ArgumentException:无法设置包含非法字符的请求头日期名称或不可用户覆盖的
如果我使用WWW类(这确实允许我手动设置“日期”头),我就能够成功地与UnityWebRequest通信,但我也试图对进行同样的操作,因为WWW很快就会被废弃。
我尝试使用System.Reflange的"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:无法覆盖系统指定的标头
那么,如何确保发送“日期”请求头呢?
有解决方案吗?还是必须使用来自不同库(如.NET的HttpWebRequest )的对象?
发布于 2016-10-14 01:52:54
使用UnityWebRequest,您不能在Date字段中设置自定义值,请检查文档。
另外,请检查RFC 2616,第4.2节,特别是关于日期头的RFC 2616,第14.18条。另外,检查RFC 2616第3.3.1节。
您确定您的dateTimeString格式正确吗?
https://stackoverflow.com/questions/40032082
复制相似问题