golang net/http包使用
http客户端import “net/http” Get、Head、Post和PostForm函数发出HTTP/ HTTPS请求。 package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
response,err := http.Get("http://www.baidu.com")
if err != nil {
// handle error
}
//程序在使用完回复后必须关闭回复的主体。
defer response.Body.Close()
body,_ := ioutil.ReadAll(response.Body)
fmt.Println(string(body))
}
package main
import (
"fmt"
"io/ioutil"
"net/http"
"bytes"
)
func main() {
body := "{"action":20}"
res,err := http.Post("http://xxx.com","application/json;charset=utf-8",bytes.NewBuffer([]byte(body)))
if err != nil {
fmt.Println("Fatal error ",err.Error())
}
defer res.Body.Close()
content,err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println("Fatal error ",err.Error())
}
fmt.Println(string(content))
}
还可以使用: package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strings"
)
func main() {
v := url.Values{}
v.Set("username","xxxx")
v.Set("password","xxxx")
//利用指定的method,url以及可选的body返回一个新的请求.如果body参数实现了io.Closer接口,Request返回值的Body 字段会被设置为body,并会被Client类型的Do、Post和PostFOrm方法以及Transport.RoundTrip方法关闭。
body := ioutil.NopCloser(strings.NewReader(v.Encode())) //把form数据编下码
client := &http.Client{}//客户端,被Get,Head以及Post使用
reqest,err := http.NewRequest("POST","http://xxx.com/logindo",body)
if err != nil {
fmt.Println("Fatal error ",err.Error())
}
//给一个key设定为响应的value.
reqest.Header.Set("Content-Type","application/x-www-form-urlencoded;param=value") //必须设定该参数,POST参数才能正常提交
resp,err := client.Do(reqest)//发送请求
defer resp.Body.Close()//一定要关闭resp.Body
content,err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Fatal error ",err.Error())
}
fmt.Println(string(content))
}
如何创建web服务端?package main
import (
"net/http"
)
func SayHello(w http.ResponseWriter,req *http.Request) {
w.Write([]byte("Hello"))
}
func main() {
http.HandleFunc("/hello",SayHello)
http.ListenAndServe(":8001",nil)
}
首先调用Http.HandleFunc 其次调用http.ListenAndServe(“:8001”,nil) mux.handler(r).ServeHTTP(w,r) * 选择handler: A 判断是否有路由能满足这个request(循环遍历ServerMux的muxEntry) B 如果有路由满足,调用这个路由handler的ServeHttp C 如果没有路由满足,调用NotFoundHandler的ServeHttp (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |