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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。