grequests----golang的requests库
github.com/levigross/grequests:
A Go "clone" of the great and famous Requests library
特点:
- 响应可以序列化为JSON和XML
- 轻松上传文件
- 轻松下载文件
- 支持以下HTTP请求方式:GET,HEAD,POST,PUT,DELETE,PATCH,OPTIONS
安装:
go get -u github.com/levigross/grequests
导入:
import "github.com/levigross/grequests"
GET请求:
func req() {
res, err := grequests.Get("http://www.baidu.com", nil)
if err != nil{
log.Fatalln("Unable to make request: ", err)
}
fmt.Println(res) // 返回Response, 包括了RawResponse,StatusCode,Header...等等
//源码部分
//func buildResponse(resp *http.Response, err error) (*Response, error) {
// // If the connection didn't succeed we just return a blank response
// if err != nil {
// return &Response{Error: err}, err
// }
//
// goodResp := &Response{
// // If your code is within the 2xx range – the response is considered `Ok`
// Ok: resp.StatusCode >= 200 && resp.StatusCode < 300,
// Error: nil,
// RawResponse: resp,
// StatusCode: resp.StatusCode,
// Header: resp.Header,
// internalByteBuffer: bytes.NewBuffer([]byte{}),
// }
// // EnsureResponseFinalized(goodResp) This will come back in 1.0
// return goodResp, nil
fmt.Println(res.StatusCode)
fmt.Println(res.Error) //Response如果没有错误,Error为nil
fmt.Println(res.Header) //
fmt.Println(res.Ok) // 返回bool值,用于验证返回的状态码是否是 2xx系列
fmt.Println(res.RawResponse) // 返回http.Response,包括了很多东西,可以看源码
//源码部分
//type Response struct {
// Status string // e.g. "200 OK"
// StatusCode int // e.g. 200
// Proto string // e.g. "HTTP/1.0"
// ProtoMajor int // e.g. 1
// ProtoMinor int // e.g. 0
// Header Header
// Body io.ReadCloser
// ContentLength int64
// TransferEncoding []string
// Close bool
// Uncompressed bool.
// Trailer Header
// Request *Request
// TLS *tls.ConnectionState
//}
fmt.Println(res.DownloadToFile("baidu.html")) // DownloadToFile允许您将响应的内容下载到文件中
fmt.Println(res.JSON()) // JSON是一种方法,它将使用响应主体中返回的JSON填充“userStruct”提供的结构(解析数据)
fmt.Println(res.XML()) //XML是一种方法,它将使用响应主体中返回的XML填充“userStruct”提供的结构,
fmt.Println(res.Bytes()) // 字节以字节数组的方式返回
res.ClearInternalBuffer //ClearInternalBuffer是一个清除我们用来保存.String()和.Bytes()数据的内部缓冲区的函数。一旦使用了这些功能 - 您可能想要释放内存。
n, err := res.Read() //如果有人想要使用原始数据,那么read是我们支持io.ReadCloser的能力的一部分
res.Close() //如果有人想要使用原始数据,关闭是我们支持io.ReadCloser的能力的一部分
}
其他可以看文档:https://godoc.org/github.com/levigross/grequests
github地址:https://github.com/levigross/grequests
grequests----golang的requests库的更多相关文章
- Golang实现requests库
Golang实现requests库 简单的封装下,方便使用,像python的requests库一样. Github地址 Github 支持 GET.POST.PUT.DELETE applicatio ...
- 异步请求Python库 grequests的应用和与requests库的响应速度的比较
requests库是python一个优秀的HTTP库,使用它可以非常简单地执行HTTP的各种操作,例如GET.POST等.不过,这个库所执行的网络请求都是同步了,即cpu发出请求指令后,IO执行发送和 ...
- Python爬虫小白入门(二)requests库
一.前言 为什么要先说Requests库呢,因为这是个功能很强大的网络请求库,可以实现跟浏览器一样发送各种HTTP请求来获取网站的数据.网络上的模块.库.包指的都是同一种东西,所以后文中可能会在不同地 ...
- Requests库上传文件时UnicodeDecodeError: 'ascii' codec can't decode byte错误解析
在使用Request上传文件的时候碰到如下错误提示: 2013-12-20 20:51:09,235 __main__ ERROR 'ascii' codec can't decode byte 0x ...
- Requests库的几种请求 - 通过API操作Github
本文内容来源:https://www.dataquest.io/mission/117/working-with-apis 本文的数据来源:https://en.wikipedia.org/wiki/ ...
- python脚本实例002- 利用requests库实现应用登录
#! /usr/bin/python # coding:utf-8 #导入requests库 import requests #获取会话 s = requests.session() #创建登录数据 ...
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ...
- python WEB接口自动化测试之requests库详解
由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...
- python爬虫从入门到放弃(四)之 Requests库的基本使用
什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其 ...
- (转)Python爬虫利器一之Requests库的用法
官方文档 以下内容大多来自于官方文档,本文进行了一些修改和总结.要了解更多可以参考 官方文档 安装 利用 pip 安装 $ pip install requests 或者利用 easy_install ...
随机推荐
- winhex与磁盘格式与 数据恢复
第一阶段: 熟悉WinHex的使用. n 熟悉磁盘工具的使用. n 利用WinHex查看物理磁盘和逻辑磁盘. n 了解WinHex中相关工具的用法. 以管理员身份运行winhex(以便之后修改) 上方 ...
- 二分查找 && 三分查找
LeetCode34. Find First and Last Position of Element in Sorted Array 题意:找出指定元素出现的范围,Ologn 思路:两次二分 cla ...
- VIM C语言函数名高亮
VIM默认情况下,函数名是不会高亮的,将下面这段代码添加到/usr/share/vim/vim73/syntax/c.vim文件的末尾即可: "highlight Functions s ...
- jpeg和jpg的区别是什么
JPG是JPEG的简写,jpg是后缀名,jpeg既可作为后缀名,又能代表文件格式:JPG——JPEG文件格式. 我们在系统自带的画图程序里保存文件,在保存类型:JPEG(*.JPG,*.JPEG,*. ...
- shell脚本,逻辑结构题练习。
awk '/5/{a=1}!a' file2结果:1234解释:第一行 /5/不匹配跳过{a=1},继续!a,此时a没有值属于假取反为真,故输出第一行 第二行 /5/不匹配跳过{a=1},继续!a,此 ...
- 人脸识别源代码Open cv
#include <stdio.h> #include <string.h> #include "cv.h" #include "cvaux.h& ...
- Alert and Action sheets and Timer and Animation
- shell基础笔记1
---恢复内容开始--- 1 test命令中不能使用浮点小数值,如: A=1.444444:[ $A -gt 1 ] 2 test命令中的>或<必须转义,否则shell会把它 ...
- (38)zabbix中配置snmp监控
1.首先按照“snmp监控快速配置”文本文档在被监控的主机上安装.配置及启动snmp服务, 具体内容如下: 1).安装snmp yum install net-snmp* -y cp -a /etc/ ...
- 小型LAMP搭建
一.dns的搭建 安装dns服务 yum install bind 修改dns的主配置文件 [root@234c17 named]# vim /etc/named.conf // // named.c ...