場景:調用外部接口,接口要求Header信息裏面包涵Date信息,且Date信息必須是格式化好的,(他們用的是Java),可是C#默認的是Date屬性不能被修改,程序員
因此就會出現下面的錯誤:web
未處理的異常: 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");
你們能夠看到,解決問題的辦法就是使用反射。編碼
反射:spa