go http.Get请求 http.Post请求 http.PostForm请求 Client 超时设置
http中有Get/Post/PostForm方法
也可以通过http包中设置client 请求配置 ,然后通过client.Do方法实现请求
下demo中功能都实现,其中有详细说明:
package main import (
"log"
"net/http" //http 请求用
"io" // io.Copy获取http请求状态用;HttpPost
"os" // os.Stdout 取io.Copy 返回数据中的status;HttpPost用
"io/ioutil" //处理http获取的数据转换用
"strings" //HttpPost2中生成Post数据用
"net/url" //HttpPost3中定义url.Values中使用到
"time" //设置超时用
"net"
)
var my_url = "http://c-dancer.com" //全局变量链接
func main(){
//HttpGet()
HttpPost()
//HttpPost2()
//HttpPost3() } //net/http包中提供了Get/Head/Post/PostForm函数来发出http/https请求
//通过get获取来http请求
func HttpGet(){
response,err := http.Get(my_url)
if err!= nil { //如果访问不成功,url不存在则会进入改判断
log.Println(err)
return
}
defer response.Body.Close() //请求完了关闭回复主体
body,err := ioutil.ReadAll(response.Body)
log.Println(string(body))
} //生成client 通过client的Do方法执行
func HttpPost(){
/* 生成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*) //设置建立连接超时
if err != nil {
return nil, err
}
conn.SetDeadline(time.Now().Add(time.Second * )) //设置发送接受数据超时
return conn, nil
},
ResponseHeaderTimeout: time.Second * ,
},
}
reqest,err := http.NewRequest("POST",my_url,strings.NewReader("name=PostName")) //提交请求;用指定的方法,网址,可选的主体放回一个新的*Request
reqest.Header.Set("Content-Type","application/x-www-form-urlencoded")
if err != nil {
panic(err)
return
}
response,err := client.Do(reqest) //前面预处理一些参数,状态,Do执行发送;处理返回结果;Do:发送请求,
defer response.Body.Close()
stdout := os.Stdout //将结果定位到标准输出,也可以直接打印出来,或定位到其他地方进行相应处理
_,err = io.Copy(stdout,response.Body) //将第二个参数拷贝到第一个参数,直到第二参数到达EOF或发生错误,返回拷贝的字节喝遇到的第一个错误.
status := response.StatusCode //获取返回状态码,正常是200
body,err := ioutil.ReadAll(response.Body)
log.Println(string(body))
log.Println(status) } //HTTP 包中POST 方法
func HttpPost2(){
//HTTP POST请求
req,err := http.Post(my_url,"application/x-www-form-urlencoded",strings.NewReader("name=myname"))//这里定义链接和post的数据
if err != nil {
log.Println(err.Error())
return
}
defer req.Body.Close()
body,err := ioutil.ReadAll(req.Body)
if err != nil {
log.Println(err.Error())
return
}
log.Println(string(body))
} //使用HTTP包中PostForm方法;
func HttpPost3(){
req,err := http.PostForm(my_url,url.Values{"key":{"value"},"id":{""}})
if err != nil {
log.Println(err.Error())
return
}
defer req.Body.Close()
body,err := ioutil.ReadAll(req.Body)
if err != nil {
log.Println(err.Error())
}
log.Println(string(body))
}
go http.Get请求 http.Post请求 http.PostForm请求 Client 超时设置的更多相关文章
- HTTP协议扫盲(七)请求报文之 GET、POST-FORM 和 POST-FILE
一.get 1.页面代码 2.请求报文 3.小结 get请求没有报文体,所以请求报文没有content-type url上的query参数param11=val11¶m12=val12 ...
- 为什么axios请求接口会发起两次请求
之前在使用axios发现每次调用接口都会有两个请求,第一个请求时option请求,而且看不到请求参数,当时也没注意,只当做是做了一次预请求,判断接口是否通畅,但是最近发现并不是那么回事. 首先我们知道 ...
- jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...
- Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器
首先在线程组下添加两个HTTP请求, 添加好两个HTTP请求后,在每个HTTP请求下添加一个查看结果数 在第一个HTTP请求下添加正则表达式提取器 在第一个HTTP请求添加好IP地址,路径,端口号,协 ...
- 框架基础:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布
距离上一次博客大概好多好多时间了,感觉再不搞点东西出来,感觉就废了的感觉.这段时间回老家学习驾照,修养,然后7月底来上海求职(面了4家,拿了3家office),然后入职同程旅游,项目赶进度等等一系列的 ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段
ServletRequest 基本概念 JavaWeb中的 "Request"对象 实际为 HttpServletRequest 或者 ServletRequest, ...
- nginx中的超时设置,请求超时、响应等待超时等
nginx比较强大,可以针对单个域名请求做出单个连接超时的配置. 比如些动态解释和静态解释可以根据业务的需求配置 proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响 ...
- JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
有这样一个压力测试环境,有一个上传页面,上传成功之后服务器会返回一些上传信息(比如文件的 id 或者保存路径之类的信息),然后压力机会继续下一个请求,比如调整 id 为 xx 的文件的一些信息等等.问 ...
- jquery Ajax请求示例,jquery Ajax基本请求方法示例
jquery Ajax请求示例,jquery Ajax基本请求方法示例 ================================ ©Copyright 蕃薯耀 2018年5月7日 https: ...
随机推荐
- 基于HTML5实现3D热图Heatmap应用
Heatmap热图通过众多数据点信息,汇聚成直观可视化颜色效果,热图已广泛被应用于气象预报.医疗成像.机房温度监控等行业,甚至应用于竞技体育领域的数据分析. http://www.hightopo.c ...
- Rafy 框架 - 通用查询条件(CommonQueryCriteria)
在应用开发过程中,有 80% 的场景下,开发者所需要的实体查询,查询条件中其实都是一些简单的属性匹配,又或是一些属性匹配的简单组合.Rafy 为这样的场景提供了更为方便使用的 API:CommonQu ...
- asp.net mvc 上传文件
转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...
- HTML5新增及移除的元素
HTML经过10多年的发展,其元素经历了废弃与不断重新定义的过程.为了更好的处理现在的互联网应用,HTML5新增了图形绘制.多媒体播放.页面结构.应用程序存储.网络工作等新元素.http://hove ...
- ef
现阶段使用回溯 entityframework作为.net平台自己的一个orm的框架,之前在项目中也有使用,主要采用了table和model first的方式,此两种感觉使用上也是大同小异.在项目中经 ...
- JavaWeb_day05cookie_session_HttpSession
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 两个会话的技术cookie session 会话概念 ...
- lsof命令
学习资源https://linux.die.net/man/8/lsof lsof mean list open files 如果说linux中一切皆文件的话,那么lsof就是一盏照亮黑暗的文件系统的 ...
- Idea SpringMVC+Spring+MyBatis+Maven调整【转】
Idea SpringMVC+Spring+MyBatis+Maven整合 创建项目 File-New Project 选中左侧的Maven,选中右侧上方的Create from archetyp ...
- MVC View中获取action、controller、area名称
获取控制器名称: ViewContext.RouteData.Values["controller"].ToString(); 获取Action名称: ViewContext.Ro ...
- Long类型的数据转换时间格式方法
function getDate(date) { //得到日期对象 var d=new Date(date); //得到年月日 var year =d.getFullYear(); ); var da ...