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

国外购物网站怎么做企业做网站有什么好处坏处

国外购物网站怎么做,企业做网站有什么好处坏处,共创福州网站建设,自己做平台网站1. 定制HTTP请求 如果需要对向服务器发送的HTTP请求做更多超越于默认设置的定制化。 client : http.Client{} 使用net/http包提供的导出类型Client#xff0c;创建一个表示客户端的变量。request, err : http.NewRequest(GET, https://ifconfig.io/ip http.Client{} 使用net/http包提供的导出类型Client创建一个表示客户端的变量。request, err : http.NewRequest(GET, https://ifconfig.io/ip, nil)  调用net/http包提供的导出函数NewRequest构建一个HTTP请求。参数解析请求类型目标url返回1个request变量。response, err : client.Do(request) 用所创建的客户端发送所构建的HTTP请求并获取响应。 用这种方法可以单独设置请求头、基本身份验证和cookies等请求参数。 一般而言除非要完成的任务非常简单否则推荐使用这种定制化方法。 // 定制HTTP请求 // 如果快捷方法产生的简单GET请求不足以满足对请求报文 // 做进一步控制的需要则可以使用自定义的HTTP客户端 package main import (fmtio/ioutillognet/http )func main() {client : http.Client{}request, err : http.NewRequest(GET, https://ifconfig.io/ip, nil)if err ! nil {log.Fatal(err)}response, err : client.Do(request)if err ! nil {log.Fatal(err)}defer response.Body.Close()resBody, err : ioutil.ReadAll(response.Body)if err ! nil {log.Fatal(err)}fmt.Printf(%s, resBody) } // 打印输出 xxx.xxx.xxx.xxx 显示客户端ip已隐去 2. 调试HTTP Go语言标准库的net/http/httputil包提供了一些方法可用于调试往返于客户端和服务器之间的HTTP请求及响应 打印请求包下面2个函数均返回关于“请求”或“响应”的字节切片转为为字符串格式即可打印显示。 debugRequest, err : httputil.DumpRequestOut(request, true)fmt.Printf(%s, debugRequest)打印响应包 debugResponse, err : httputil.DumpResponse(response, true)fmt.Printf(%s, debugResponse) 如果我们希望仅在调试环节打印这些信息那么可以将DEBUG设置为1个环节变量或配置变量通过os包的Getenv函数用于获取环境变量的值可据此判断是否打印调试信息。 debug : os.Getenv(DEBUG) // 调试HTTP请求 // net/http/httputil包的DumpRequestOut和DumpResponse函 // 数可用于在调试过程中查看HTTP请求和响应帮助查找BUG package mainimport (fmtio/ioutillognet/httpnet/http/httputilos )func main() {debug : os.Getenv(DEBUG)client : http.Client{}request, err : http.NewRequest(GET, https://ifconfig.io/ip, nil)if err ! nil {log.Fatal(err)}request.Header.Add( // 通过设置请求头设置了可接受的响应内容类型为jsonAccept, application/json)if debug 1 { // 打印请求debugRequest, err :httputil.DumpRequestOut(request, true)if err ! nil {log.Fatal(err)}fmt.Printf(%s, debugRequest)}response, err : client.Do(request)if err ! nil {log.Fatal(err)}defer response.Body.Close()if debug 1 { // 打印响应debugResponse, err :httputil.DumpResponse(response, true)if err ! nil {log.Fatal(err)}fmt.Printf(%s, debugResponse)}resBody, err : ioutil.ReadAll(response.Body)if err ! nil {log.Fatal(err)}fmt.Printf(%s, resBody) } // 打印输出 GET /ip HTTP/1.1 Host: ifconfig.io User-Agent: Go-http-client/1.1 Accept: application/json Accept-Encoding: gzipHTTP/2.0 200 OK Content-Length: 13 Alt-Svc: h3-24:443; ma86400, h3-23:443; ma86400 Cf-Cache-Status: DYNAMIC Cf-Ray: 562461317d37d342-LAX Content-Type: text/plain; charsetutf-8 Date: Sun, 09 Feb 2020 08:12:40 GMT Expect-Ct: max-age604800, report-urihttps://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct Server: cloudflare Set-Cookie: __cfduidd9ad8e7d64d78d19d075953bebfb13afa1581235960; expiresTue, 10-Mar-20 08:12:40 GMT; path/; domain.ifconfig.io; HttpOnly; SameSiteLaxxxx.xxx.xxx.xxx 客户端ip已隐去 xxx.xxx.xxx.xxx 3. 响应超时 客户端向服务器发送请求后完全无法知道服务器会在多长时间内返回响应。 在系统的底层有太多因素会对响应时间构成影响。 在客户端一侧 DNS查找速度创建TCP套接字的速度与服务器建立TCP连接的速度TLS握手的速度(如果使用HTTPS)向服务器发送数据的速度在服务器一侧 重定向的速度业务处理的速度向客户端发送数据的速度 以默认方式创建的客户端没有对响应设置超时这意味着 如果服务器很久甚至永远没有向客户端返回响应客户端将一直等待维持这条连接的内存和表示这个套接字的文件描述符也将一直存在如果发出的多个请求都是这种情况那么客户端的资源将会很快耗尽 建议为客户端设置响应超时一旦超过时间还没有收到响应即宣告错误 client : http.Client{Timeout: 1 * time.Second} 在声明http.Client变量对象时设置其Timeout字段值例如设置响应超 时1秒钟 。 response, err : client.Do(request) 继续使用client.Do发送请求如果超过一秒钟还没收到来自服务器的响应则返回错误。 // 处理响应超时 // HTTP客户端在向服务器发送请求后完全无法知道何时能收到对方的响应。 // 建议设置一个超时时间如果在指定的时间内没有收到响应则返回错误 package main import (fmt io/ioutil log net/http net/http/httputil os time ) func main() {debug : os.Getenv(DEBUG)client : http.Client{Timeout: 1 * time.Second}request, err : http.NewRequest(GET, https://ifconfig.io/ip, nil)if err ! nil {log.Fatal(err)}if debug 1 {debugRequest, err :httputil.DumpRequestOut(request, true)if err ! nil {log.Fatal(err)}fmt.Printf(%s, debugRequest)}response, err : client.Do(request)if err ! nil {log.Fatal(err)}defer response.Body.Close()if debug 1 {debugResponse, err :httputil.DumpResponse(response, true)if err ! nil {log.Fatal(err)}fmt.Printf(%s, debugResponse)}resBody, err : ioutil.ReadAll(response.Body)if err ! nil {log.Fatal(err)}fmt.Printf(%s, resBody) } // 打印输出 2020/02/09 14:21:08 Get https://ifconfig.io/ip: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 使用Transport可以更精细化地控制超时甚至为传输的每个阶段设置超时。此时我们需要填充client结构体中的Transport字段该字段值是由一个http导出类型公有类型Transport所创建的结构体变量该结构体可包含多个字段通过每个字段为传输的每个阶段设置单独的超时时间。 dl : net.Dialer{    Timeout:   30 * time.Second,    KeepAlive: 30 * time.Second,}tr : http.Transport{    DialContext:           dl.DialContext,    TLSHandshakeTimeout:   10 * time.Second,    IdleConnTimeout:       90 * time.Second,    ResponseHeaderTimeout: 10 * time.Second,    ExpectContinueTimeout:  1 * time.Second,}client : http.Client{Transport: tr} // 精细化控制超时 // 使用Transport可以更精细化地控制超时甚 // 至为HTTP传输的每个阶段设置独立的超时 package mainimport (fmtio/ioutillognetnet/httpnet/http/httputilostestingtime )func TestFineResponseTimeout(t *testing.T) {debug : os.Getenv(DEBUG)dl : net.Dialer{Timeout: 30 * time.Second,KeepAlive: 30 * time.Second,}tr : http.Transport{DialContext: dl.DialContext,TLSHandshakeTimeout: 10 * time.Second,IdleConnTimeout: 90 * time.Second,ResponseHeaderTimeout: 10 * time.Second,ExpectContinueTimeout: 1 * time.Second,}client : http.Client{Transport: tr}request, err : http.NewRequest(GET, https://ifconfig.io/ip,nil)if err ! nil {log.Fatal(err)}if debug 1 {debugRequest, err :httputil.DumpRequestOut(request, true)if err ! nil {log.Fatal(err)}fmt.Printf(%s, debugRequest)}response, err : client.Do(request)if err ! nil {log.Fatal(err)}defer response.Body.Close()if debug 1 {debugResponse, err :httputil.DumpResponse(response, true)if err ! nil {log.Fatal(err)}fmt.Printf(%s, debugResponse)}resBody, err : ioutil.ReadAll(response.Body)if err ! nil{log.Fatal(err)}fmt.Printf(%s,resBody) } // 打印输出 2020/02/09 16:39:39 Get https://ifconfig.io/ip: dial tcp: lookup ifconfig.io: no such host //手动断网导致访问失败
http://www.hkea.cn/news/14349487/

相关文章:

  • 做文化传播公司网站wordpress 子主题路由
  • 做ag视频大全网站微站
  • 如何做网站搬家南昌房产信息网查询
  • 哪家做网站好wordpress主题圆角
  • 好的做蛋糕网站创造与魔法官方网站一起做喜欢的事
  • 手机网站大全1网上商城开发设计
  • .tech域名的网站营销网站的推广
  • 什么网站上做推广wordpress rss 采集
  • 做网站那个平台好企业网站管理中心
  • 站群管理系统cms怎么做外网网站监控软件
  • 美食网站网页设计怎么手动更新wordpress
  • 深圳开发公司网站建设wordpress密码可见
  • seo优化系统哪个好西安网站自然排名优化
  • 怎样自己做网站赚钱如果在网上接网站建设项目
  • 二级域名免费网站怎么申请wordpress 图片cms主题
  • 做优化网站能以量取胜么企业标准查询网官网
  • 东莞企业网站个人网站广告联盟搭建
  • 建设厅网站用户名和密码福田蒙派克e
  • go语言视频网站开发微信小说网站开发
  • 建设外贸网站哪家好做虚拟币网站需要什么手续
  • 做网站哈尔滨主页网站怎么建设
  • 龙井茶网站建设目的wordpress设置菜单
  • 企业网站建设公司价格如何找网站建设客户
  • 济南外贸网站建站学院后勤处网站建设方案书
  • 企业网站的优缺点重庆 企业网站建设
  • 什么网站百度的收录高如何制作网站链接
  • 建设网站服务器自营方式的特点牙科医院网站建设方案
  • 江西省的建设厅官方网站网络营销方式有哪些?
  • 自媒体还是做网站常德县
  • 视觉冲击力的网站设计给彩票网站做代理违法吗