繁体   English   中英

如何从HTTP响应正文读取错误

[英]How to read error from HTTP response body

这是错误的样子,尝试fmt.Println(err)时只需要"Body" fmt.Println(err)

安慰

Expected HTTP response code [200] when accessing [POST http://controller:8774/v2.1/os-keypairs], but got 409 instead
{"conflictingRequest": {"message": "Key pair 'Darkhaa test hi' already exists.", "code": 409}}

控制者

createKeyPair, err := compute.CreateKeypair(raw["keyPairName"].(string))

if err != nil {
    fmt.Println(err)
    lists["retType"] = -1
    lists["retDesc"] = err
} else {
    lists["retType"] = 0
    lists["retDesc"] = ""
    lists["retData"] = createKeyPair
}

i.Data["json"] = lists
type ErrorStruct struct {
    ConflictingRequest struct {
        Message string `json:"message"`
        Code    int    `json:"code"`
    } `json:"conflictingRequest"`
}

go func() {
    _, err := compute.CreateKeypair(raw["keyPairName"].(string))
    if err != nil {
        re := regexp.MustCompile("\\{(.*?)\\}")
        match := re.FindStringSubmatch(err.Error())
        data := ErrorStruct{}
        json.Unmarshal([]byte(match[1]), data)
        log.Printf("Message: %s", data.Message)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM