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 超时设置的更多相关文章

  1. HTTP协议扫盲(七)请求报文之 GET、POST-FORM 和 POST-FILE

    一.get 1.页面代码 2.请求报文 3.小结 get请求没有报文体,所以请求报文没有content-type url上的query参数param11=val11&param12=val12 ...

  2. 为什么axios请求接口会发起两次请求

    之前在使用axios发现每次调用接口都会有两个请求,第一个请求时option请求,而且看不到请求参数,当时也没注意,只当做是做了一次预请求,判断接口是否通畅,但是最近发现并不是那么回事. 首先我们知道 ...

  3. jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器

    1.简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如 ...

  4. Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器

    首先在线程组下添加两个HTTP请求, 添加好两个HTTP请求后,在每个HTTP请求下添加一个查看结果数 在第一个HTTP请求下添加正则表达式提取器 在第一个HTTP请求添加好IP地址,路径,端口号,协 ...

  5. 框架基础:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布

    距离上一次博客大概好多好多时间了,感觉再不搞点东西出来,感觉就废了的感觉.这段时间回老家学习驾照,修养,然后7月底来上海求职(面了4家,拿了3家office),然后入职同程旅游,项目赶进度等等一系列的 ...

  6. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段

      ServletRequest 基本概念 JavaWeb中的 "Request"对象  实际为   HttpServletRequest  或者  ServletRequest, ...

  7. nginx中的超时设置,请求超时、响应等待超时等

    nginx比较强大,可以针对单个域名请求做出单个连接超时的配置. 比如些动态解释和静态解释可以根据业务的需求配置 proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响 ...

  8. JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器

    有这样一个压力测试环境,有一个上传页面,上传成功之后服务器会返回一些上传信息(比如文件的 id 或者保存路径之类的信息),然后压力机会继续下一个请求,比如调整 id 为 xx 的文件的一些信息等等.问 ...

  9. jquery Ajax请求示例,jquery Ajax基本请求方法示例

    jquery Ajax请求示例,jquery Ajax基本请求方法示例 ================================ ©Copyright 蕃薯耀 2018年5月7日 https: ...

随机推荐

  1. 『.NET Core CLI工具文档』(一).NET Core 命令行工具(CLI)

    说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:.NET Core Command Line Tools 翻译:.NET Core命令行工具 什么是 .NET Core ...

  2. Sublime text 2/3 中 Package Control 的安装与使用方法

    Package Control 插件是一个方便 Sublime text 管理插件的插件,但因为 Sublime Text 3 更新了 Python 的函数,API不同了,导致基于 Python 开发 ...

  3. 通过JAXB完成Java对象与XML之间的转换

    Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...

  4. 网页mp3语音展示,点击图片放大,点击图片跳转链接,调表格

    查看mp3语音 <td class="value"><embed src="${sounds.soundName}" type="a ...

  5. Singleton(单例模式)的一种实现 -- 基于【惰性】适用于【大对象】的一种生产实践

    一.说明 本文中的代码类,在生产中使用了很长的时间,曾应用于多个企业多个项目实践中,其中也踩了不少坑,总结了一些适用的业务情景, 重要的事情说三遍: a.本代码类不是万能药,不要在业务情景中滥用! b ...

  6. 使用 Vue 2.0 实现服务端渲染的 HackerNews

    Vue 2.0 支持服务端渲染 (SSR),并且是流式的,可以做组件级的缓存,这使得极速渲染成为可能.同时, 和 2.0 也都能够配合 SSR 提供同构路由和客户端 state hydration.v ...

  7. LaunchScreen.storyboard启动图遇到的坑

    Xcode有时候在LaunchScreen.storyBoard中修改了启动图片之后,运行却没有效果,直接白屏,而往storyboard中拖插件是可以显示的,设置成Assets.xcassets中的其 ...

  8. Linux下安装Oracle11g服务器

    1.安装环境 Linux服务器:CentOS  64位 Oracle服务器:Oracle11gR2 64位 2.系统要求 Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内 ...

  9. CentOS下安装使用start-stop-daemon

    CentOS下安装使用start-stop-daemon 在centos下下了个自启动的服务器脚本 执行的时候发现找不到start-stop-daemon命令 好吧 执行手动编译一下 加上这个命令 w ...

  10. 【转】JVM 架构解读

    每个Java开发人员都知道字节码由JRE(Java运行时环境)执行.但许多人不知道JRE是Java Virtual Machine(JVM)的实现,它分析字节码,解释代码并执行它.作为开发人员,我们应 ...