zoukankan      html  css  js  c++  java
  • 【笔记】Go语言 http协议客户端实现

    共用的CheckErr函数

    package main
    
    import(
    	"fmt"
    )
    
    
    func CheckErr(err error) {
    	defer func() {
    		ins,ok := recover().(error);
    		if ok {
    			fmt.Println("程序异常: ", ins.Error())
    		}
    	}()
    	if err != nil {
    		panic(err)
    	}
    }
    

    使用http.NewRequest方法

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    
    func main() {
    	testHttpNewRequest()
    }
    
    
    func testHttpNewRequest() {
    	client := http.Client{} //创建一个client
    	request,err := http.NewRequest("GET", "https://www.codeforces.com",nil) 	//创建一个request, 函数有三个参数:method :请求方法, url:请求URL, body:可选参数
    	CheckErr(err) // 自定义函数,检测错误
    	cookName := &http.Cookie{Name:"username",Value:"greenty"}
    	request.AddCookie(cookName) //添加cookie
    	response,err := client.Do(request) //发送request,获得response
    	CheckErr(err) 
    	defer response.Body.Close() 
    	request.Header.Set("Accept-Language","zh-ch")
    	fmt.Printf("Header: %+v
    ",request.Header)
    	fmt.Printf("响应状态码: %v
    ",response.StatusCode) //查看请求头的信息
    	if response.StatusCode == 200 {
    		fmt.Println("网络请求成功")
    	} else {
    		fmt.Println("网络请求失败")
    	}
    }
    

    在服务端程序开发的过程中,cookie经常被用于验证用户登录。

    为什么Response.Body需要被关闭



    使用client.Get方法

    /*
    使用client.Get()方法
    1. 创建client对象
    2. 使用client调用Get()方法
    */
    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	testClientGet()
    }
    
    func testClientGet() {
    	client := http.Client{} //所有值默认
    	response,err := client.Get("https://www.toutiao.com/search/suggest/initial_page/")
    	CheckErr(err)
    	fmt.Printf("响应状态码: %v
    ",response.StatusCode)
    	if response.StatusCode == 200 {
    		fmt.Println("网络请求成功")
    		defer response.Body.Close()
    	} else {
    		fmt.Println("网络请求失败")
    	}
    }
    

    使用http.Get()方法

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	testHttpGet()
    }
    
    func testHttpGet() {
    	response, err := http.Get("http://www.baidu.com")
    	CheckErr(err)
    	fmt.Printf("响应码: %v
    ",response.StatusCode)
    	if response.StatusCode == 200 {
    		defer response.Body.Close()
    		fmt.Println("网络请求成功")
    	} else {
    		fmt.Println("网络请求失败")
    	}
    }
    
  • 相关阅读:
    Tinyhttpd 代码学习
    Windows noinstall zip 安装MySQL。
    Java 优先队列
    Java Comparable 和 Comparator
    Centos6.6下安装Python3.5
    对象的实现
    对象接口
    适配器模式
    java基础学习(一)
    【MongoDB】如何注册windows服务
  • 原文地址:https://www.cnblogs.com/greenty1208/p/13112005.html
Copyright © 2011-2022 走看看