登录
首页 >  Golang >  Go问答

使用 http.NewRequest POST 数据失败

来源:Golang技术栈

时间:2023-05-01 10:50:25 327浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《使用 http.NewRequest POST 数据失败》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到golang等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我正在尝试将数据从一个 golang 服务传递到另一个使用http.NewRequest(). 为此,我使用了以下代码:

        httpClient := http.Client{}

        userserviceUrl := "http://user:7071/checkemail"

        form := url.Values{}
        form.Set("uuid", uuid)
        form.Set("email", email)

        b := bytes.NewBufferString(form.Encode())
        req, err := http.NewRequest("POST", userserviceUrl, b)
        if err != nil {
            log.Println(err)
        }

        opentracing.GlobalTracer().Inject(
            validateEmailSpan.Context(),
            opentracing.HTTPHeaders,
            opentracing.HTTPHeadersCarrier(req.Header))

        resp, err := httpClient.Do(req)
        //_, err = http.PostForm("http://user:7071/checkemail", url.Values{"uuid": {uuid}, "email": {email}})

        if err != nil {
            log.Println("Couldnt verify email address user service sends an error : ", err)
        }
        defer resp.Body.Close()

我从[Golang 得到这个:http.NewRequest POST](https://stackoverflow.com/questions/28624969/golang-http-newrequest- post-with-json-payload-returns-error-500)

当我尝试从用户服务转储接收到的数据时:

    req.ParseForm()
    log.Println("Form values : ", req.Form)

我得到一个空map[]

在这里,我只是尝试将跟踪跨度注入到我的请求中,以前我用来http.PostForm()传递数据,它工作得很好。但我[不知道传递tracing给它](https://stackoverflow.com/questions/58672447/distributed- tracing-with-golang-http-postform)。

正确答案

来自 ParseForm 的文档

[...] 当 Content-Type 不是 application/x-www-form-urlencoded 时,不会读取请求正文,并且 r.PostForm 被初始化为非零空值。

PostForm 自动设置 Content-Type,但现在你必须自己做:

req, err := http.NewRequest("POST", userserviceUrl, strings.NewReader(form.Encode()))
// TODO: handle error
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

好了,本文到此结束,带大家了解了《使用 http.NewRequest POST 数据失败》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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