Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

Google资深工程师深度讲解Go语言-http及其他标准库(十一)

大家好,又见面了,我是全栈君。

一.HTTP标准库

  • 使用http客户端发送请求
  • 使用http.client控制请求头部等
  • 使用httputil简化工作
package main

import (
	"fmt"
	"net/http"
	"net/http/httputil"
)

func main() {
	resp,err:=http.Get("http://www.imooc.com")
	if err!=nil {
		panic(err)
	}
	defer resp.Body.Close()
	s,err:=httputil.DumpResponse(resp,true)
	if err !=nil{
		panic(err)
	}
	fmt.Printf("%s\n",s)
}

升级版

package main

import (
	"fmt"
	"net/http"
	"net/http/httputil"
)

func main() {
	request,err:=http.NewRequest(http.MethodGet,"http://www.imooc.com",nil)
	request.Header.Add("User-Agent"," Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1")

	client:=http.Client{
		Transport:     nil,//设置代理服务器
		CheckRedirect: func( //重定向从这里过
			req *http.Request,
			via []*http.Request) error {
				fmt.Println("redirect:",req)
			return nil
		},
		Jar:           nil,//模拟登陆,设置cookie
		Timeout:       0,
	}
	resp,err:=client.Do(request)
	//resp,err:=http.DefaultClient.Do(request)
	//resp,err:=http.Get("http://www.imooc.com")
	if err!=nil {
		panic(err)
	}
	defer resp.Body.Close()
	s,err:=httputil.DumpResponse(resp,true)
	if err !=nil{
		panic(err)
	}
	fmt.Printf("%s\n",len(s))
}

二.http服务器的性能分析

  • import _”net/http/pprof”
  • 访问/debug/pprof
  • 使用 go tool pprof分析性能
import (
	"./filelisting"
	"log"
	"net/http"
	"os"
	_ "net/http/pprof"  //库前加下划线,引入库,使有pprof的能力
)

Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

浏览器访问:file:///private/var/folders/w9/l38fmd696n95tmrt4pf980vm0000gn/T/pprof001.svg

Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

标准库文档:https://studygolang.com/pkgdoc

或者使用:godoc -http localhost:6060,在本地查看

:Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111698.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 虚拟化漏洞3种解决方案_怎么实现漏洞复现的

    虚拟化漏洞3种解决方案_怎么实现漏洞复现的利用虚拟机复现漏洞“永恒之蓝”攻击:kaliLinux2020.3靶机:WindowsServer2008R2x64下面详细讲述测试的过程。————“永恒之蓝”简介利用Windows系统的SMB漏洞可以获取系统最高权限。于2017年在全球的范围内大面积爆发,不法分子利用这个漏洞制作了勒索病毒,锁定被攻击的设备,并要求支付高额赎金。“永恒之蓝”的原理主要是扫描所有开放445文件共享端口的Windows机器。这里进行测试要用到一个工具MSF,能快速

    2022年10月16日
  • 上下文无关文法产生的语言都可以用正则文法来描述_c语言结构体默认值

    上下文无关文法产生的语言都可以用正则文法来描述_c语言结构体默认值对于文法G=(V,T,S,P),如果产生式的形式如下:A->xBA->x其中A,B属于V,x属于T*,则称为右线性文法;相似的,如果产生式的形式如下:A->BxA->x则称为左线性文法。右线性文法和左线性文法统称为正则文法。正则表达式的表达能力等价于正则文法,正则表达式的定义如下:字母表中的任意字母是正则表达式,空串和空集也是正则表达式;如果r,s…

    2022年10月24日
  • python中isinstance函数

    python中isinstance函数1、描述python中isinstance()函数,是python中的一个内置函数,用来判断一个函数是否是一个已知的类型,类似type()。2、语法isinstance(object,class

  • cts测试套件下载(4V)

    目录概述组织caseCTS框架配置文件测试case配置文件启动框架CtsConsoletest组件CtsTest测试类型执行命令总结1概述CTS测试框架是有两个版本的,Android6.0以及之前的版本都统称为V1版本,7.0以及之后的版本为V2(目前Android版本已经迭代到AndroidO了,目前还是用的V2框架),其实两者都是基于基础框架Trade-Federat

  • stm32数据手册boot_stm32f103中文手册.pdf

    stm32数据手册boot_stm32f103中文手册.pdfstm32f103中文手册STM32F103x6STM32F103x8STM32F103xB增强型,32位基于ARM核心的带闪存、USB、CAN的微控制器7个定时器、2个ADC、9个通信接口功能初步信息■核心−ARM32位的Cortex™-M3CPU−…

    2022年10月16日
  • postman做模拟服务器_centos7服务器安装教程

    postman做模拟服务器_centos7服务器安装教程postman安装方式:1)浏览器插件方式安装:2)客户端安装:https://www.getpostman.com/apps使用教程:1)界面:2)利用postman发送post请求、参数是json格式3)Get方法和Post方法的区别1.get是从服务器上获取数据,post是向服务器传送数据。2.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。3.POST的安全性要比…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号