近來研究 HttpWebRequest —— 輔助類完成時,POST JSON數據 總會 丟失標頭(Headers)。
HttpWebRequest POST JSON數據,分如下幾步:
> 將 JSON 轉為 byte[]。
> 從 HttpWebRequest.GetRequestStream() 獲得 寫入流。
> 將 byte[] 寫入到這個 Stream 中。
類似的 操作,包括 文件上傳,POST 表單 —— 最終都要 轉換成 byte[]
核心注意事項:
一定不要設置 HttpWebRequest.ContentLength 這個字段。手動設置 這個字段 將導致 標頭(Header)丟失【尤其是 自定義標頭丟失】。
特此備忘,希望其他有類似問題的朋友 不要走彎路。
> 這兩天,對於 標頭丟失 這個 BUG,我查遍了 一百多個網頁,沒有答案。
> 又 反編譯了 .Net 底層類庫,看是不是 微軟 不允許 自定義標頭。
> 最後 居然是這樣一行 簡單的代碼 —— 足足浪費了 3天時間。
舒小龍 InkFx
2016-07-17 03:03