go 客户端的请求带有请求头和cookie值得请求

  • 基础概念

    • 请求:客户端访问服务端
    • 响应:服务端对客户端的应答
    • 示例图

  • 带有特殊请求头和cookie值得客户端请求方式

    • 使用:http.NewRequest,Do()组合。并且在创建请求的时候,带上cookie值和其他请求头
    • 参考代码
    package main
    
    import (
      "bytes"
      "encoding/json"
      "fmt"
      "io/ioutil"
      "net/http"
      "time"
    )
    
    var cookies []*http.Cookie
    var url = "XXXXX"
    
    // login
    func Login() {
      req := ReqProto{}
      data := make(map[string]string)
      data["test"] = "11"
      req.Data = data
      logginClient := http.Client{}
      logginJsonStr, err := json.Marshal(&req)
      if err != nil {
          err := fmt.Errorf("登录发起post请求时,json.Mashal错误:%v", err)
          fmt.Println(err)
          return
      }
      logginRequest, err := http.NewRequest("POST", url, bytes.NewBuffer(logginJsonStr))
      if err != nil {
          err := fmt.Errorf("登录发起post请求时,http.NewRequest错误:%v", err)
          fmt.Println(err)
          return
      }
    
      logginRequest.Header.Set("Content-Type", "application/json")
      logginRequest.Header.Set("Content-Type", "application/x-www-form-urlencoded")
      loginResponse, err := logginClient.Do(logginRequest)
      if err != nil {
          err := fmt.Errorf("登录发起post请求时,client.Do错误:%v", err)
          fmt.Println(err)
          return
      }
      fmt.Println(loginResponse)
      if loginResponse.StatusCode != 200 {
          err := fmt.Errorf("登录发起post请求时,response.StatusCode:%v", loginResponse.StatusCode)
          fmt.Println(err)
          return
      } else {
          data, err := ioutil.ReadAll(loginResponse.Body)
          if err != nil {
              fmt.Println(err)
              return
          }
          var dataJSON interface{}
          json.Unmarshal(data, &dataJSON)
          fmt.Println(dataJSON)
      }
      fmt.Println("登录成功")
      cookies = loginResponse.Cookies()
    }
    
    // StaticData
    func StaticData() {
      client := http.Client{}
      req, err := http.NewRequest("GET",url, nil)
      if err != nil {
          fmt.Println(err)
          return
      }
      for i := 0; i < len(cookies); i++ {
          req.AddCookie(cookies[i])
      }
      resp, err := client.Do(req)
      if err != nil {
          fmt.Println(err)
          return
      }
      defer resp.Body.Close()
      data, err := ioutil.ReadAll(resp.Body)
      if err != nil {
          fmt.Println(err)
          return
      }
      fmt.Println(string(data))
    }
    
    func main() {
      Login()
      StaticData()
    }
    

原文地址:https://www.cnblogs.com/MyUniverse/p/11704639.html

时间: 2024-07-31 09:02:34

go 客户端的请求带有请求头和cookie值得请求的相关文章

HTTP请求模型和头信息参考

发送HTTP请求:一个请求由四个部分组成:请求行.请求头标.空行和请求数据 请求行 请求行由三个标记组成:请求方法.请求URI和HTTP版本,它们用空格分隔.例如:GET /index.html HTTP/1.1 HTTP规范定义了8种可能的请求方法: GET            检索URI中标识资源的一个简单请求HEAD            与GET方法相同,服务器只返回状态行和头标,并不返回请求文档POST            服务器接受被写入客户端输出流中的数据的请求PUT     

[转]HTTP请求模型和头信息参考

参考: http://blog.csdn.net/baggio785/archive/2006/04/13/661410.aspx模型: http://blog.csdn.net/baggio785/archive/2006/04/13/661412.aspx HTTP请求模型 一.连接至Web服务器一个客户端应用(如Web浏览器)打开到Web服务器的HTTP端口的一个套接字(缺省为80). 例如:http://www.myweb.com:8080/index.html在Java中,这将等同于代

Http消息头中常用的请求头和响应头

作为Web开发对常用http的请求头和响应头熟悉了解一下还是很有必要的.比如请求头中Content-type指定了请求的内容,若类型是application/x-www-form-urlencoded,就可以调用reqeust的获取参数方法取到内容,若是其它都需要调用获取流的方法获取.又比如响应头X-Frame-Options 的设置直接决定了你的页面是否能被其它非同源的ifream嵌入,而这个设置可以是在html页面中,也可以是框架或代码的响应头设置中,也可以是在http服务器(nginx或t

http 请求头的Cookie中的 JSESSIONID 是什么?

这是一个保险措施因为Session默认是需要Cookie支持的. 但有些客户浏览器是关闭Cookie的这个时候就需要在URL中指定服务器上的session标识. http本身是无session的,无法跟踪客户端的信息,换句话说:http协议不管是谁联接自己. 为了实现session,必须有浏览器支持.浏览器可以用cookie存储session,这是最通用的做法. 但是,如果我自己写一个完全符合http协议的浏览器,但是不配合服务器的session要求,那么服务器就无法产生session. 好在现

curl get请求添加header头信息

function get($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPGET, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出. $header = ['User-Agent: php test']; //设置一个你的浏览器agent的header curl_setopt($ch, CURLOPT

有道词典翻译(携带请求头和post参数请求)

一.静态爬取页面信息 body { background-color: #f4ede3 } .box { width: 600px } 有道翻译网址:http://fanyi.youdao.com/ 在翻译中输入python 找到接口和请求的方式 参数是From Data类型 需要把参数数据转换为字典, 复制粘贴后按住Ctrl + r ,然后 Headers 内容的长度是data携带参数的长度 代码实现 分析:红色圈住的,是会根据要翻译的内容变化而变化 运行结果: 代码: import requ

HTTP请求响应报文&amp;&amp;相关状态码&amp;&amp;GET_POST请求方法 总结

HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行   请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET /data/info.html HTTP/1.1 方法字段就是HTTP使用的请求方法,比如常见的GET/POST 其中HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别: HTTP1.0对于每个连接都的建立一次连接一次只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Ho

python——请求服务器(http请求和https请求)

一.http请求 1.http请求方式:get和post get一般用于获取/查询资源信息,在浏览器中直接输入url+请求参数点击enter之后连接成功服务器就能获取到的内容,post请求一般用于更新资源,通过form表单或者json.xml等其他形式提交给服务器端,然后等待服务器端给返回一个结果的方式(这个返回结果一般就是被修改之后的是否成功的状态,或者是修改后的最新数据table等). http请求,不论是get还是post请求,都会包含几个部分,分别是header,cookie,get会有

0919-网络 请求 数据解析(掌握get post请求 解析json等代码即可)

http://localhost:8080/MJServer/video 复习看的: NSURLConnection 发送请求   暂时没有用到AFN 基本http请求 GET: - (IBAction)login { // 1.用户名 NSString *usernameText = self.username.text; if (usernameText.length == 0) { [MBProgressHUD showError:@"请输入用户名"]; return; } //