标签:不能 sys ref 拓展 灵活 request 提高 power ted
场景:调用外部接口,接口要求Header信息里面包涵Date信息,且Date信息必须是格式化好的,(他们用的是Java),但是C#默认的是Date属性不能被修改,
所以就会出现下面的错误:
未处理的异常: System.Net.WebException: 在 WebClient 请求期间发生异常。 ---> Sy
tem.ArgumentException: 此标头必须使用适当的属性进行修改。
参数名: name
在 System.Net.WebHeaderCollection.ThrowOnRestrictedHeader(String headerName)
在 System.Net.WebHeaderCollection.Add(String name, String value)
在 System.Net.HttpWebRequest.set_Headers(WebHeaderCollection value)
在 System.Net.WebClient.CopyHeadersTo(WebRequest request)
在 System.Net.WebClient.GetWebRequest(Uri address)
在 System.Net.WebClient.DownloadFile(Uri address, String fileName)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.WebClient.DownloadFile(Uri address, String fileName)
在 System.Net.WebClient.DownloadFile(String address, String fileName)
在 hash.Program.Main(String[] args) 位置 D:\powerall\hash\hash\Program.cs:行
号 122
解决代码:
MethodInfo priMethod = webReqst.Headers.GetType().GetMethod("AddWithoutValidate", BindingFlags.Instance | BindingFlags.NonPublic); priMethod.Invoke(webReqst.Headers, new[] { "Date", DATE }); string myDate = webReqst.Headers.Get("Date");
大家可以看到,解决问题的办法就是使用反射。
反射:
反射:修改请求头HttpWebRequest/Webclient Header属性的date值-"此标头必须使用适当的属性进行修改"
标签:不能 sys ref 拓展 灵活 request 提高 power ted
原文地址:http://www.cnblogs.com/xuwendong/p/6692330.html