登录
首页 >  Golang >  Go问答

解码 golang http.Client POST 输出

来源:stackoverflow

时间:2024-04-16 19:54:32 411浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《解码 golang http.Client POST 输出》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我正在尝试学习 golang,并且正在尝试将旧的 php 脚本“移植”到 golang。 现在我有一个关于“解码”http.client post 请求正文的问题。 (我可能太老了,无法学习一门新语言......)

我的代码如下所示(缩短):

var my_client = &http.client{
    transport: my_trans,        // defined elsewhere
    timeout:   my_timeout,      // defined elsewhere
}
logininfo := map[string]interface{}{"username": user, "password": pw}
payload, _ := json.marshal(logininfo)
request, _ := http.newrequest("post", "https://abc.def.com", bytes.newbuffer(payload))
request.header.set("content-type", "application/json")
response, err := my_client.do(request)
defer response.body.close()
log.printf("response.body")
log.printf("%s", response.body)

这会输出响应的正文,如下所示:

2021/01/13 13:50:31 response.body
2021/01/13 13:50:31 {{"data":{"state":1,"id":"1234567890","token":"abcdef0123456","lastloginip":"192.168.10.1","lastlogintime":1600000000},"error":{"code":0,"description":"0"}}
}

我想从该主体中提取两个字段“id”和“token”。 我得出的结论如下:

type my_loginresult struct {
    data struct {
        state         int    `json:"state"`
        id            string `json:"id"`
        token         string `json:"token"`
        lastloginip   string `json:"lastloginip"`
        lastlogintime int    `json:"lastlogintime"`
    }
    error struct {
        code        int    `json:"code"`
        description string `json:"description"`
    }
}

resultjson := my_loginresult{}
tmp_body, _ := ioutil.readall(response.body)
json.unmarshal(tmp_body, &resultjson)
id = resultjson.data.id
token = resultjson.data.token

这是“解码”正文的“正确”且最有效的方法吗?

在 php 中我可以这样做:

id = $response->body->data->id;
token = $response->body->data->Token;

问候,


解决方案


是的,我认为你的解决方案应该有效。您是否面临任何问题。您也可以使用映射而不是结构。但这会增加复杂性。

今天关于《解码 golang http.Client POST 输出》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>