golang使用http client发起get和post请求示例
golang要请求远程网页,可以使用net/http包中的client提供的方法实现。查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下:
get请求
funchttpGet(){
resp,err:=http.Get("http://www.01happy.com/demo/accept.php?id=1")
iferr!=nil{
//handleerror
}
deferresp.Body.Close()
body,err:=ioutil.ReadAll(resp.Body)
iferr!=nil{
//handleerror
}
fmt.Println(string(body))
}
post请求
http.Post方式
funchttpPost(){
resp,err:=http.Post("http://www.01happy.com/demo/accept.php",
"application/x-www-form-urlencoded",
strings.NewReader("name=cjb"))
iferr!=nil{
fmt.Println(err)
}
deferresp.Body.Close()
body,err:=ioutil.ReadAll(resp.Body)
iferr!=nil{
//handleerror
}
fmt.Println(string(body))
}
Tips:使用这个方法的话,第二个参数要设置成”application/x-www-form-urlencoded”,否则post参数无法传递。
http.PostForm方法
funchttpPostForm(){
resp,err:=http.PostForm("http://www.01happy.com/demo/accept.php",
url.Values{"key":{"Value"},"id":{"123"}})
iferr!=nil{
//handleerror
}
deferresp.Body.Close()
body,err:=ioutil.ReadAll(resp.Body)
iferr!=nil{
//handleerror
}
fmt.Println(string(body))
}
复杂的请求
有时需要在请求的时候设置头参数、cookie之类的数据,就可以使用http.Do方法。
funchttpDo(){
client:=&http.Client{}
req,err:=http.NewRequest("POST","http://www.01happy.com/demo/accept.php",strings.NewReader("name=cjb"))
iferr!=nil{
//handleerror
}
req.Header.Set("Content-Type","application/x-www-form-urlencoded")
req.Header.Set("Cookie","name=anny")
resp,err:=client.Do(req)
deferresp.Body.Close()
body,err:=ioutil.ReadAll(resp.Body)
iferr!=nil{
//handleerror
}
fmt.Println(string(body))
}
同上面的post请求,必须要设定Content-Type为application/x-www-form-urlencoded,post参数才可正常传递。
如果要发起head请求可以直接使用httpclient的head方法,比较简单,这里就不再说明。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。