golang post用户名密码登陆的巨坑

栏目: Go · 发布时间: 7年前

  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不行
  • 错误的情况
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)))

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据压缩导论(第4版)

数据压缩导论(第4版)

[美] Khalid Sayood / 贾洪峰 / 人民邮电出版社 / 2014-1 / 129.00

数据压缩已经成为信息革命的一门支撑技术,这场革命已经改变了我们的生活,而在此过程中,数据压缩也变得几乎无处不在。从MP3播放器到智能手机,再到数字电视和数字电影,数据压缩几乎成了所有信息技术的必备要素。 近年来,以大数据为标志的互联网技术高歌猛进。数据规模大、产生速度快、来源多样等特性,导致数据存储和处理都前所未有地复杂。《数据压缩导论(第4版)》作为迄今为止数据压缩领域最全面而深入的著作,......一起来看看 《数据压缩导论(第4版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码