HTTP
简单demo
url := "http://www.xiaohuar.com" //定义一个URl。
resp,err := http.Get(url) //获取url的内容。
if err != nil {//如果有异常就打印异常
log.Fatal(err)
}
defer resp.Body.Close() //在方法运行完后关闭连接,万要关闭链接,不然会造成资源泄露。
if resp.StatusCode != http.StatusOK{ //如果返回状出现错误,就抛出错误。
log.Fatal(resp.Status)
}
io.Copy(os.Stdout,resp.Body) //将正常的结果输出到屏上,并不会占用内存。
一个封装好的方法
//发送请求
func fetchUrl(data interface{}, url string, method string, resu interface{}) (error) {
var res *http.Response
var err error
switch method {
case http.MethodGet:
res, err = http.Get(url)
if err != nil {
return err
}
break
case http.MethodPost:
jsonBytes, err := json.Marshal(data)
if err != nil {
return err
}
bodyReader := bytes.NewBuffer(jsonBytes)
res, err = http.Post(url, "text/xml", bodyReader)
if err != nil {
return err
}
break
}
Body := res.Body
defer Body.Close()
body, err := ioutil.ReadAll(Body)
fmt.Println(string(body))
if err != nil {
return err
}
err = json.Unmarshal(body, resu)
if err != nil {
return err
}
return nil
}
URL
s := "http://www.xiaohuar.com"//定义地址
u,err := url.Parse(s) //请求地址
if err != nil {//如果有异常就打印异常
log.Fatal(err)
}
fmt.Println("使用的协议是:",u.Scheme)
fmt.Println("主机名称是:",u.Host)
fmt.Println("当前路径是:",u.Path)
fmt.Println("请求信息是:",u.RawQuery)
fmt.Println("用户信息是:",u.User)
fmt.Println("当前的锚点是:",u.Fragment)
网友评论