第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

http超時(shí)時(shí)如何獲取json.NewDecoder(body).Decode()的錯(cuò)誤原因?

http超時(shí)時(shí)如何獲取json.NewDecoder(body).Decode()的錯(cuò)誤原因?

Go
慕工程0101907 2023-07-31 17:16:34
我正在嘗試找出一種方法來(lái)獲取 JSON 解碼時(shí)的錯(cuò)誤原因http.Response.Bodyif err := json.NewDecoder(resp.Body).Decode(&lResp); err != nil {? ? // Get the cause of err}的類型err(并errors.Cause(err)使用github.com/pkg/errors或github.com/friendsofgo/errors)是*errors.errorString。所以我現(xiàn)在能做的與檢查錯(cuò)誤類型完全相反,即:if strings.HasSuffix(cause.Error(), "(Client.Timeout exceeded while reading body)") {? ? //...}我可以嘗試使用ioutil.ReadAll(),然后*http.httpError當(dāng)超時(shí)發(fā)生時(shí)我會(huì)得到一個(gè)錯(cuò)誤。主要原因是我不想獲取錯(cuò)誤中部分讀取的 JSON 結(jié)構(gòu) - 僅獲取錯(cuò)誤的原因,并且以當(dāng)前的方式,它正在完成(返回的錯(cuò)誤)我得到:main.ListingResponse.DataSources: struct CustomType{ /* partially read JSON struct ... */ }.net/http: request canceled (Client.Timeout exceeded while reading body)
查看完整描述

1 回答

?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊

好的,所以我最終將響應(yīng)正文讀入 a 中[]byte,然后使用json.Unmarshal()


bb, err := ioutil.ReadAll(resp.Body)

if err != nil {

    var netError net.Error

    if errors.As(err, &netError) {

        log.Printf("netError %v", netError)

        // handle net.Error...

        return nil, netError

    }

    // handle general errors...

    return nil, netError

}


var lResp LResponse

if err := json.Unmarshal(bb, &lResp); err != nil {

    return nil, errors.Wrap(err, "failed to unmarshal LResponse")

}

我仍在尋找一種解決方案來(lái)json.NewDecoder(resp.Body).Decode(&str)避免將整個(gè)主體復(fù)制到內(nèi)存中。


如果有人知道如何做到這一點(diǎn),請(qǐng)?zhí)砑幽拇鸢浮?/p>


查看完整回答
反對(duì) 回復(fù) 2023-07-31
  • 1 回答
  • 0 關(guān)注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)