当前位置: 首页 > news >正文

网站制作公司站建设制作企业宣传片拍摄公司

网站制作公司站建设,制作企业宣传片拍摄公司,HTML5网站建设案例,做一页简单的h5多少钱在构建web应用时#xff0c;我们经常需要处理HTTP请求、做网页抓取或者搭建web服务器等任务#xff0c;而Go语言在这方面为我们提供了强大的内置工具#xff1a;net/http标准库#xff0c;它为我们操作和处理HTTP协议提供了便利。 基础用法 一#xff1a;处理HTTP请求 首… 在构建web应用时我们经常需要处理HTTP请求、做网页抓取或者搭建web服务器等任务而Go语言在这方面为我们提供了强大的内置工具net/http标准库它为我们操作和处理HTTP协议提供了便利。 基础用法 一处理HTTP请求 首先我们来看看如何使用net/http标准库发送一个HTTP请求。net/http库中的http.Get函数可以快速地对一个URL发起GET请求。 package mainimport (fmtio/ioutillognet/http )func main() {res, err : http.Get(http://example.com/)if err ! nil {log.Fatal(err)}defer res.Body.Close()body, err : ioutil.ReadAll(res.Body)if err ! nil {log.Fatal(err)}fmt.Printf(%s, body) }二创建和启动HTTP服务器 在Go语言中我们可以使用http.ListenAndServe函数配合http.HandleFunc函数快速地创建一个HTTP服务器。 package mainimport (fmtnet/http )func helloHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, Hello, Gopher!) }func main() {http.HandleFunc(/hello, helloHandler)if err : http.ListenAndServe(:8080, nil); err ! nil {log.Fatal(err)} }三使用http.Client自定义请求行为 有时我们需要对HTTP请求进行更细粒度的控制比如设置超时时间、添加请求头等等。这个时候我们可以使用http.Client和http.Request来自定义我们的请求行为。 package mainimport (fmtnet/httptime )func main() {client : http.Client{Timeout: 5 * time.Second,}req, err : http.NewRequest(GET, http://example.com, nil)if err ! nil {log.Fatal(err)}req.Header.Add(User-Agent, myClient)resp, err : client.Do(req)if err ! nil {log.Fatal(err)}defer resp.Body.Close()fmt.Printf(Response status: %s\n, resp.Status) }以上我们简洁明了地介绍了如何使用Golang中的net/http标准库进行HTTP请求的发送、服务器的创建以及请求行为的自定义。但是net/http库的功能远不止这些。 进阶用法 反向代理 反向代理是一个非常常见的需求Golang的net/http库能简单地帮我们实现这一功能。 package mainimport (lognet/httpnet/http/httputilnet/url )func main() {targetUrl, _ : url.Parse(http://example.com)proxy : httputil.NewSingleHostReverseProxy(targetUrl)http.HandleFunc(/, func(w http.ResponseWriter, r *http.Request) {proxy.ServeHTTP(w, r)})log.Fatal(http.ListenAndServe(:8080, nil)) }在上述代码中我们通过httputil.NewSingleHostReverseProxy函数创建了一个反向代理处理器然后在http处理函数中通过这个处理器来处理进来的http请求。 升级websocket WebSocket提供了在单个 TCP 连接上进行全双工通信的能力。在Golang中我们可以借助golang.org/x/net/websocket包这不是标准库但是是官方维护的包轻松实现WebSocket。 package mainimport (fmtgolang.org/x/net/websocketnet/http )func Echo(ws *websocket.Conn) {var err errorfor {var reply stringif err websocket.Message.Receive(ws, reply); err ! nil {fmt.Println(Cant receive)break}fmt.Println(Received back from client: reply)msg : Received: replyfmt.Println(Sending to client: msg)if err websocket.Message.Send(ws, msg); err ! nil {fmt.Println(Cant send)break}} }func main() {http.Handle(/, websocket.Handler(Echo))if err : http.ListenAndServe(:1234, nil); err ! nil {log.Fatal(ListenAndServe:, err)} }在上面的例子中我们创建了一个简单的回音服务客户端发送一个消息到服务器服务器会追加一个Received: 前缀并发送回去。 需要注意的是WebSocket 只能用于已具有兼容 WebSocket 的客户端如一些现代 web 浏览器的 HTTP 服务器。websocket包并不能用于一个普通的HTTP服务端。 当然除了反向代理和Websocket net/http包中还有诸多高级的使用方法。这里我会介绍两个常见的高级应用场景使用http.RoundTripper自定义HTTP请求过程和使用http.CookieJar接口处理Cookie。 自定义HTTP请求过程 如果你需要在发送HTTP请求时进行更多的自定义控制如自定义DNS解析、TCP连接过程、TLS握手等等那么你可以通过实现 http.RoundTripper 接口来满足需求。 package mainimport (fmtnet/httpnethttp net/http // alias to avoid conflicttime )type myTransport struct {transportation http.RoundTripper }func (t *myTransport) RoundTrip(req *http.Request) (*http.Response, error) {req.Header.Add(User-Agent, myClient)resp, err : t.transportation.RoundTrip(req)if err ! nil {return nil, err}// you can access Response herefmt.Println(Status:, resp.Status)return resp, nil }func main() {t : myTransport{transportation: nethttp.DefaultTransport,}client : http.Client{Transport: t}resp, err : client.Get(http://example.com)if err ! nil {log.Fatal(err)}defer resp.Body.Close()fmt.Println(Response Status:, resp.Status) }在上述代码中我们实现了自己的 http.RoundTripper 接口在每次发送HTTP请求时添加了自定义的User-Agent头并在请求返回后打印了响应的状态码。 处理Cookie http.CookieJar 是一个接口可以用来自定义HTTP请求中的cookie处理逻辑。Go标准库为我们提供了一个简单的内存CookieJar的实现 net/http/cookiejar。 package mainimport (net/httpnet/http/cookiejarnet/url )func main() {jar, err : cookiejar.New(nil)if err ! nil {log.Fatal(err)}client : http.Client{Jar: jar,}// Create a cookie on client sideclient.Jar.SetCookies(url.URL{Scheme: http, Host: example.com},[]*http.Cookie{{Name: cookieName, Value: cookieValue}},)// Check if the cookie has been setif cookies : client.Jar.Cookies(url.URL{Scheme: http, Host: example.com}); len(cookies) 0 {fmt.Println(Cookie:, cookies[0])} }在上述例子中我们首先创建了一个新的CookieJar实例并将其用于一个新的HTTP客户端中。然后我们在客户端上创建了一个新的cookie并检查它是否已经被存储在了CookieJar中。 如果这篇文章帮助了你不妨一键三连哦
http://www.dnsts.com.cn/news/165125.html

相关文章:

  • 网站空间的管理站点网络服务提供者对在业务活动中收集的公民个人电子信息
  • 宝安专业手机网站设计公司网站建设拾金手指下拉十九
  • php网站商城源码基于cms的企业网站建设
  • 用墨刀做视频网站高端网站建设服务
  • 个人网站建设流程图接做网站的
  • 北京兼职网站建设广州做网站(信科网络)
  • 黑色背景的网站开发工具DW自动生成代码做网站
  • 网站怎么做图片栏目wordpress面向对象
  • 网站效果代码英文学习网站
  • 监控摄像头做直播网站做的网站放在阿里云
  • 网站需求表购物网站开发会遇到的的问题
  • 有哪些外国网站做精油的商城网站建设行业现状
  • 做宣传图册在什么网站网站建设 代表联系群众
  • 深圳住房和建设局网站轮候大厅wordpress打赏图片显示不了
  • wordpress 配置邮箱长沙seo优化价格
  • 怎么做网站访问被拒绝免费优化网站建设
  • 商城网站里可以再放cms吗游戏网站建设论文
  • 简述网站建设和推广评价指标西安网站建设推广服务
  • 佛山顺德网站制作公司哪家好广元市住房和城乡建设局网站
  • 网站 绝对路径 相对路径做网站视频手机
  • 广东专业高端网站建设中国兰州网招聘
  • 公司做的网站入哪个会计科目长沙房地产
  • 做珠宝网站价格多少wordpress学校模板
  • 模板网站如何建设php做视频网站
  • app网站有哪些佛山网站推广市场
  • 有什么网站开发软件wordpress 获取title
  • 网站备案地网站动态加速
  • 网站开发公司需要哪些资质网站用户体验优化方案
  • 江门seo网站排名wordpress ajax评论
  • 福州自适应网站建设制作网页模板