美文网首页
go post请求参数无效的巨坑

go post请求参数无效的巨坑

作者: fengbenming | 来源:发表于2019-02-27 18:03 被阅读0次
    1. http的Header设置,按照官网或者大部分文章的设置来就可以,如下:
    client := &http.Client{Transport: nil}
        req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(string(info)))
        if err != nil {
           panic(err)
        }
        //header
        req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36")
        req.Header.Set("Content-Type", "application/json;charset=UTF-8")
    
    1. golang的http form data数据设置,golang.com官网的例子和网上大部分的文章使用url.Values最后提交的时候数据不能到达后台。 最后实在没办法,通过http client的transparent结合charles抓包,仔细对比网页直接请求和go请求的差异才把问题解决。 请求的form表单数据是一段json数据,而url.Values不行
      请求头的content-type为application/json
    • 错误的情况
           postValues := url.Values{}
        postValues.Add("expire", "7")
        postValues.Add("referer", "http%3A%2F%2Fwww.jikexueyuan.com%2F")
        postValues.Add("uname", username)
        postValues.Add("password", password)
        postValues.Add("verify", verify_code)
    req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(postValue.Encode()))
    
    • 正确的姿势
    loginInfo := LoginInfo{
            Username: username,
            Password: password,
            LoginYzm: "",
        }
    
        info, err := json.Marshal(loginInfo)
    req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(string(info)))
    

    相关文章

      网友评论

          本文标题:go post请求参数无效的巨坑

          本文链接:https://www.haomeiwen.com/subject/szafuqtx.html