Warning: Undefined array key "night" in /www/wwwroot/dhaomu.com/wp-content/themes/b2/header.php on line 18

Go语言技术http get/post请求

Go语言技术http get/post请求。Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

代码演示

// 参数顺序:url, contentType, method, body string
func HttpRequest(param ...string) ([]byte, error) {
	/*   生成client,参数默认;
	*    这个结构体有四个属性
	*    Transport(RoundTrepper);指定执行的独立、单次http请求的机制
	*    CheckRedirect(func(req *Request, via []*Request)err):指定处理重定向的策略,如果不为nil,客户端在执行重定向之前调用本函数字段.如果CheckRedirect 返回一个错误,本类型中的get方法不会发送请求,如果CheckRedirect为nil,就会采用默认策略:连续请求10次后停止;
	*    jar(CookieJar):jar指定cookie管理器,若果为nil请求中不会发送cookie,回复中的cookie会被忽略
	*    TimeOut(time.Duration):指定本类型请求的时间限制,为0表示不设置超时
	 */
	//client := &http.Client{}    这里初始化了一个默认的client,并没有配置一些请求的设置

	//可以通过client中transport的Dail函数,在自定义Dail函数里面设置建立连接超时时长和发送接受数据超时
	client := &http.Client{
		Transport: &http.Transport{
			Dial: func(netw, addr string) (net.Conn, error) {
				conn, err := net.DialTimeout(netw, addr, time.Second*3) //设置建立连接超时
				if err != nil {
					return nil, err
				}
				conn.SetDeadline(time.Now().Add(time.Second * 3)) //设置发送接受数据超时
				return conn, nil
			},
			ResponseHeaderTimeout: time.Second * 3,
		},
	}

	// 如果需要添加HEADER, 要用下边这段
	// reqest, err := http.NewRequest("POST", url, strings.NewReader(param[3])) //提交请求;用指定的方法,网址,可选的主体放回一个新的*Request
	//reqest.Header.Set("Content-Type", "application/x-www-form-urlencoded")//application/json
	// if err != nil {
	// 	return nil, err
	// }
	//response, err := client.Do(reqest)//.PostForm(url, data) // .Do(reqest) //前面预处理一些参数,状态,Do执行发送;处理返回结果;Do:发送请求,
	var err error
	var response *http.Response
	if param[2] == "POST" {
		response, err = client.Post(param[0], param[1], strings.NewReader(param[3]))
	} else if param[2] == "GET" {
		response, err = client.Get(param[0])
	} else {
		return nil, errors.New("unsupport method")
	}
	if err != nil {
		return nil, err
	}
	defer response.Body.Close()
	//_, err = io.Copy(stdout, response.Body) //将第二个参数拷贝到第一个参数,直到第二参数到达EOF或发生错误,返回拷贝的字节后遇到的第一个错误.
	if response.StatusCode == 200 { //获取返回状态码,正常是200
		return ioutil.ReadAll(response.Body)
	}
	return nil, errors.New("status code error")
}
温馨提示:
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明

给TA赞赏
共{{data.count}}人
人已赞赏
编程技巧

Css手机端相同标签,字体大小不一解决办法

2023-10-26 0:00:00

编程技巧

Regex技术正则表达式\/*[\s\S]?*\/|([^:]|^)\/\/.$代码

2023-10-28 0:00:00

0 条回复 A文章作者 M管理员

Warning: Trying to access array offset on value of type null in /www/wwwroot/dhaomu.com/wp-content/themes/b2/functions.php on line 3914

Warning: Trying to access array offset on value of type null in /www/wwwroot/dhaomu.com/wp-content/themes/b2/functions.php on line 3914
----《》
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索