如何从HTTP响应正文读取错误 [英] How to read error from HTTP response body
本文介绍了如何从HTTP响应正文读取错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是错误的样子,当我尝试 fmt.Println(err)
Body >
This is how error looks like, I just need "Body"
when I try 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)
}
}
这篇关于如何从HTTP响应正文读取错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文