亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Fiddler 環繞 JSON 響應

Fiddler 環繞 JSON 響應

Go
DIEA 2021-11-01 10:27:58
我有一個在 Go 中實現的 Web 服務,它從外部服務返回一個 JSON 結構。返回對象后,它看起來像這樣:{"otherServiceInfoList":[],"action...我的 Go Web 服務只是將 JSON 讀取到一個切片中:response, err := ioutil.ReadAll(resp.Body)并將其返回給客戶端:w.Write(response)響應在 Postman 中按原樣顯示,但 Fiddler 預先和附加響應如下:34ee {"otherServiceInfoList":[],"... 0注意前導34ee和尾隨0.然后我被提升來轉換響應:“響應已編碼,可能需要在檢查前進行解碼。”接受提示 removes 返回原始 JSON。Go 的w.write方法是應用了額外的字符,還是特定于 Fiddler?順便說一句,我在寫入緩沖區之前設置了以下標頭:w.Header().Set("Content-Type", "application/json; charset=UTF-8")
查看完整描述

2 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

這是 http 1.1 分塊響應。該協議將發送格式:


size-of-chunk-in-hex

chunk

...

最終塊大小為 0 表示響應結束。您的示例顯示響應為 13550 字節,并以一個塊發送。


查看完整回答
反對 回復 2021-11-01
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

您正在處理分塊響應。我不確定您的最終目標是什么,但有幾種不同的選擇。消息來源本身說;


    // Body represents the response body.

    //

    // The http Client and Transport guarantee that Body is always

    // non-nil, even on responses without a body or responses with

    // a zero-length body. It is the caller's responsibility to

    // close Body.

    //

    // The Body is automatically dechunked if the server replied

    // with a "chunked" Transfer-Encoding.

    Body io.ReadCloser

所以例如這里; response, err := ioutil.ReadAll(resp.Body)在您中繼來自其他服務的響應的地方,您可以通過使提供的服務resp設置一個 Transfer-Encoding 標頭并使用分塊值來解決問題,假設您也可以訪問該 api。如果您只在這個中間層工作,那么您必須在編寫響應之前自己拆分響應。如果您在 Fiddler 中監控的請求沒有chunkedTransfer-Encoding,只需添加它可能會導致 Fiddler 將其顯示為與您在 Postman 中看到的相同。


查看完整回答
反對 回復 2021-11-01
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號