package main
import (
"log"
"net/http" //http 请求用
"io" // 获取http请求状态用;HttpPost
"os" // 取 返回数据中的status;HttpPost用
"io/ioutil" //处理http获取的数据转换用
"strings" //HttpPost2中生成Post数据用
"net/url" //HttpPost3中定义中使用到
"time" //设置超时用
"net"
)
var my_url = "" //全局变量链接
func main(){
//HttpGet()
HttpPost()
//HttpPost2()
//HttpPost3()
}
//net/http包中提供了Get/Head/Post/PostForm函数来发出http/https请求
//通过get获取来http请求
func HttpGet(){
response,err := (my_url)
if err!= nil { //如果访问不成功,url不存在则会进入改判断
(err)
return
}
defer () //请求完了关闭回复主体
body,err := ()
(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():指定本类型请求的时间限制,为0表示不设置超时
*/
//client := &{} 这里初始化了一个默认的client,并没有配置一些请求的设置
//可以通过client中transport的Dail函数,在自定义Dail函数里面设置建立连接超时时长和发送接受数据超时
client := &{
Transport: &{
Dial: func(netw, addr string) (, error) {
conn, err := (netw, addr, *2) //设置建立连接超时
if err != nil {
return nil, err
}
(().Add( * 2)) //设置发送接受数据超时
return conn, nil
},
ResponseHeaderTimeout: * 2,
},
}
reqest,err := ("POST",my_url,("name=PostName")) //提交请求;用指定的方法,网址,可选的主体放回一个新的*Request
("Content-Type","application/x-www-form-urlencoded")
if err != nil {
panic(err)
return
}
response,err := (reqest) //前面预处理一些参数,状态,Do执行发送;处理返回结果;Do:发送请求,
defer ()
stdout := //将结果定位到标准输出,也可以直接打印出来,或定位到其他地方进行相应处理
_,err = (stdout,) //将第二个参数拷贝到第一个参数,直到第二参数到达EOF或发生错误,返回拷贝的字节喝遇到的第一个错误.
status := //获取返回状态码,正常是200
body,err := ()
(string(body))
(status)
}
//HTTP 包中POST 方法
func HttpPost2(){
//HTTP POST请求
req,err := (my_url,"application/x-www-form-urlencoded",("name=myname"))//这里定义链接和post的数据
if err != nil {
(())
return
}
defer ()
body,err := ()
if err != nil {
(())
return
}
(string(body))
}
//使用HTTP包中PostForm方法;
func HttpPost3(){
req,err := (my_url,{"key":{"value"},"id":{"123"}})
if err != nil {
(())
return
}
defer ()
body,err := ()
if err != nil {
(())
}
(string(body))
}