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. 关于 WP 开发中.xaml 与.xaml.cs 的关系

    今天我们先来看一下在WP8.1开发中最长见到的几个文件之间的关系.比较论证,在看这个问题之前我们简单看看.NET平台其他两个不同的框架: Windows Forms 先看看Window Forms中的 ...

  2. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

  3. Redis简单案例(三) 连续登陆活动的简单实现

    连续登陆活动,或许大家都不会陌生,简单理解就是用户连续登陆了多少天之后,系统就会送一些礼品给相应的用户.最常见的 莫过于游戏和商城这些.游戏就送游戏币之类的东西,商城就送一些礼券.正值国庆,应该也有不 ...

  4. (0)ASP.NET Core 简单介绍 和开发环境搭建 - ASP.NET从MVC5升级到MVC6

    ASP.NET从MVC5升级到MVC6 总目录 ASP.NET Core 首先,ASP原本只是一种技术,这种技术从上个世纪90年代就有了. Active Service Page 和 Java Ser ...

  5. JavaWeb_day03_员工信息添加修改删除

    day03员工的添加,修改,删除 修改功能 思路 : 点击修改员工数据之后,跳转到单行文本,查询要修改的员工id的全部信息,主键id设置为readonly,其余的都可以修改, 修改之后,提交按钮,提交 ...

  6. spring源码:Aware接口(li)

    一.spring容器中的aware接口介绍 Spring中提供了各种Aware接口,比较常见的如BeanFactoryAware,BeanNameAware,ApplicationContextAwa ...

  7. spring源码:BeanPostProcessor(li)

    在spring管理Bean的初始化过程中,除了正常管理bean的实例化(初始化.参数注入等)外,还对外提供了丰富的对Bean操作的扩展.例如自定义初始化操作,自定义容器退出时Bean的销毁操作等等.这 ...

  8. 初识Servlet

    1.创建DispatcherServlet package myservlet; import java.io.IOException; import javax.servlet.ServletExc ...

  9. linux(七)__shell脚本编程

    一.什么是shell脚本 shell除了是命令解释器之外还是一种编程语言,用shell编写的程序类似于DOS下的批处理程序. 它是用户与操作系统之间的一个接口. shell脚本语言非常擅长处理文本类型 ...

  10. Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境【转】

    项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建 ...