Web本质
1.Web是基于HTTP协议进行交互的应用网络
2.Web就是通过使用浏览器/APP访问的各种资源
//Http服务端
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func f1(w http.ResponseWriter, r *http.Request) {
b, err := ioutil.ReadFile("./xx.txt")
if err != nil {
w.Write([]byte(fmt.Sprintf("%v", err)))
}
w.Write(b)
}
func main() {
http.HandleFunc("/posts/Go/15_socket/", f1) //别人执行/posts/Go/15_socket,就执行f1函数来处理
http.ListenAndServe("127.0.0.1:9090", nil)
}
//客户端
package main
import (
"fmt"
"net/http"
"net/url"
)
//模拟发送http访问请求
func main() {
// resp, err := http.Get("http://127.0.0.1:9090/xxx/?name=周林&age=18")
// if err != nil {
// fmt.Printf("get url failed,err:%v\n", err)
// return
// }
//等效写法
data:=url.Values{} //url encode
urlObj,_:=url.Parse("http://127.0.0.1:9090/xxx/")
data.Set("name","周林")
data.Set("age","9000")
queryStr:=data.Encode() //URL encode之后的URL encode中处理了一些值中的关键字符
urlObj.RawQuery=queryStr
req,err:=http.NewRequest("GET",urlObj.String(),nil)
// //resp, err := ioutil.ReadAll(resp.Body)
// if err != nil {
// fmt.Println("load file err:%v", err)
// return
// }
//禁用KeepAlive的client
tr:=&http.Transport{
DisableKeepAlives: true,
}
client:=http.Client{
Transport: tr,
}
resp,err:=client.Do(req)
if err != nil {
fmt.Println("load file err:%v", err)
return
}
defer resp.Body.Close()
}