httpie请求使用
来源:互联网 发布:memories语言软件 编辑:程序博客网 时间:2024/05/16 07:18
转载地址 https://www.hi-linux.com/posts/59166.html
如果你经常需要通过终端以非交互模式访问网络服务器(例如,从网络上下载文件,或者是测试RESTful网络服务接口),可能你会选择的工具是wget或curl。
HTTPie(读aych-tee-tee-pie)是一款开源的命令行HTTP工具。HTTPie采用Python开发,底层用到了Requests和Pygments库。HTTPie设计用来增强wget和curl的可用性。它的主要目标是使通过命令行与网络服务器进行交互的过程变得尽可能的人性化。其提供了一个简单的HTTP环境来让我们通过简单而自然的语法发送任意HTTP请求,并显示彩色输出。HTTPie可用于测试,调试和与HTTP服务器进行普通的交互。
官方主页: http://httpie.org/
先展示一下HTTPie官方的一个HTTPie VS cURL的图给大家看看。
安装HTTPie
Linux
HTTPie是用Python写的,所以你可以在几乎所有地方(Linux,MacOSX,Windows)安装它。而且,在大多数的Linux发行版中都有编译好的安装包。
Debian、Ubuntu或者Linux Mint
1
$ sudo apt-get install httpie
Fedora
1
$ sudo yum install httpie
CentOS/RHEL(Centos7需启用EPEL源)
首先,启用EPEL仓库,然后运行
1
$ sudo yum install httpie
对于任何Linux发行版,另一个安装方法使用pip。
1
$ sudo pip install --upgrade httpie
Mac OS X
1
$ brew install httpie
HTTPie使用
当你安装完HTTPie后,你可以通过输入http命令来调用它。
标准命令格式
1
http [flags] [METHOD] URL [ITEM [ITEM]]
先看一个示例
123456789101112131415161718192021222324252627282930
$ http PUT httpbin.org/put hello=world Referer:http://www.imike.meHTTP/1.1 200 OKAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Connection: keep-aliveContent-Length: 458Content-Type: application/jsonDate: Tue, 03 May 2016 09:25:33 GMTServer: nginx{"args": {},"data": "{\"hello\": \"world\"}","files": {},"form": {},"headers": {"Accept": "application/json","Accept-Encoding": "gzip, deflate","Content-Length": "18","Content-Type": "application/json","Host": "httpbin.org","Referer": "http://www.imike.me","User-Agent": "HTTPie/0.9.3"},"json": {"hello": "world"},"origin": "118.60.17.21","url": "http://httpbin.org/put"}
定制头部
你可以使用<header:value>
的格式来定制头部。例如,我们发送一个HTTP GET请求到www.test.com ,使用定制用户代理(user-agent)和来源(referer),还有定制头部(比如MyParam)。
1
$ http www.test.com User-Agent:Xmodulo/1.0 Referer:http://www.imike.me MyParam:Foo
注意到当使用HTTP GET方法时,就无需明确指定HTTP方法。
这个HTTP请求看起来如下
1234567
GET / HTTP/1.1Host: www.test.comAccept: */*Referer: www.imike.meAccept-Encoding: gzip, deflate, compressMyParam: FooUser-Agent: Xmodulo/1.0
上传文件
1
$ http post http://127.0.0.1:8080/login < /root/1.py
下载文件
你可以把http作为文件下载器来使用。你需要像下面一样把输出重定向到文件。
1
$ http www.test.com/my_file.zip > my_file.zip
或者
1
$ http --download www.test.com/my_file.zip
或者
1
$ http -d {url} #支持https
使用其他HTTP方法
除了默认的GET方法,你还可以使用其他方法(比如PUT、POST、DELETE、HEAD)。
发送一个HTTP PUT请求
1
$ http PUT www.test.com name='Dan Nanni' email='dan@email.com'
发送POST数据
提交表单
使用http命令提交表单很容易,如下
1
$ http -f POST www.test.com name='Dan Nanni' comment='Hi there'
-f
选项使http命令序列化数据字段,并将Content-Type
设置为application/x-www-form-urlencoded; charset=utf-8
。
这个HTTP POST 请求看起来如下
12345678
POST / HTTP/1.1Host: www.test.comContent-Length: 31Content-Type: application/x-www-form-urlencoded; charset=utf-8Accept-Encoding: gzip, deflate, compressAccept: */*User-Agent: HTTPie/0.8.0name=Dan+Nanni&comment=Hi+there
模拟Form的上传, Content-Type: multipart/form-data
1
$ http -f POST test.com/jobs name='John Smith' file@~/test.pdf
模拟HEAD方法
1
$ http HEAD www.imike.me
HEAD这个方法只会让服务器返回http response headers。
这个命令结果如下
1234567891011121314151617181920212223242526272829
RequestHEAD / HTTP/1.1Accept: */*Accept-Encoding: gzip, deflateConnection: keep-aliveHost: www.imike.meUser-Agent: HTTPie/0.9.2ResponseHTTP/1.1 200 OKAccept-Ranges: bytesAccess-Control-Allow-Origin: *Age: 0Cache-Control: max-age=600Connection: keep-aliveContent-Encoding: gzipContent-Length: 36794Content-Type: text/html; charset=utf-8Date: Wed, 15 Jul 2015 09:26:22 GMTExpires: Wed, 15 Jul 2015 09:36:22 GMTLast-Modified: Sun, 12 Jul 2015 11:32:15 GMTServer: imike.meVary: Accept-EncodingVia: 1.1 varnishX-Cache: MISSX-Cache-Hits: 0X-Served-By: cache-fra1227-FRAX-Timer: S1436952382.011631,VS0,VE99
请求删除的方法
1
$ http DELETE test.com
修改请求头
使用:分隔
1
$ http test.com User-Agent:Yhz/1.0 'Cookie:a=b;b=c' Referer:http://imike.me/
认证
12
$ http -a username:password test.com$ http --auth-type=digest -a username:password test.com
JSON支持
HTTPie内置JSON的支持。事实上HTTPie默认使用的内容类型(content-type)就是application/json。因此,当你不指定内容类型发送数据字段时,它们会自动序列化为JSON对象。
123456789101112131415
$ http http://127.0.0.1:8080/snippets/1/HTTP/1.0 200 OKContent-Type: application/jsonDate: Mon, 04 Jan 2016 03:22:29 GMTServer: WSGIServer/0.1 Python/2.7.6X-Frame-Options: SAMEORIGIN{"code": "foo = \"bar\"\n","language": "python","linenos": false,"pk": 1,"style": "friendly","title": ""}
传递JSON数据请求(默认就是JSON数据请求)
1
$ http PUT test.com name=nate password=nate_password
如果JSON数据存在不是字符串则用:=分隔,例如
1
$ http PUT test.com name=nate password=nate_password age:=28 a:=true streets:='["a", "b"]'
输入重定向
HTTPie的另外一个用户友好特性是输入重定向,你可以使用缓冲数据提供HTTP请求内容。例如
1
$ http POST api.test.com/db/lookup < my_info.json
或者
12
$ echo '{"name": "Dan Nanni"}' | http POST api.test.com/db/lookup$ echo '{"name": "Dan Nanni","email": "test@email.com"}' | http POST api.test.com/db/lookup
使用http代理
123
$ http --proxy=http:127.0.0.1:8087 youtube.com$ http --proxy=http:http://192.168.1.100:8060 youtube.com$ http --proxy=http:http://user:pass@192.168.1.100:8060 youtube.com
显示详细的请求
1
$ http -v test.com
只显示Header
1
$ http -h test.com
只显示Body
1
$ http -b test.com
进阶用法
看全部并跟随跳转
1
$ http --follow httpbin.org/redirect/3
下载图片,然后用imagemagick转化,然后上传到另外一个网站
1
$ http octodex.github.com/images/original.jpg | convert - -resize 25% - | http test.com/Octocats
把认证信息放到session里
1
$ http --session=user1 -a user1:password test.com X-Foo:Bar
使用之前认证过后的session继续访问
1
$ http --session=user1 test.com
- httpie请求使用
- HTTPie 工具使用入门
- Httpie 工具入门使用
- 使用httpie下载图片
- HTTPie 工具使用入门
- HTTPie 工具使用入门
- HTTPie 工具使用入门
- httpie
- 使用HTTPie测试Web服务
- httpie 命令行工具使用记录
- 创建博客-使用HTTPie测试Web服务
- 使用httpie分析资源,并绕过下载保护
- 《Flask development》使用HTTPie测试web服务问题
- 使用Httpie调试ElasticSearch环境搭建及简单测试(图文详解)
- CenOS安装httpie
- HTTPie,与curl比较
- CentOS 安装Httpie
- 6、http客户端httpie工具
- word2vec 中的数学原理详解(一)目录和前言
- JVAV几种常见的编码格式
- 信息反思
- linux的tar命令
- Java学习中,所遇到的一些问题及解决方案
- httpie请求使用
- 考试总结11
- java 序列化定义的 serialVersionUID 有什么作用
- 2017-10-27周测试题
- 今天看到新闻说多久换手机
- ReentrantLock实现原理分析
- 现代都市女性所爱的潮流搭!
- 论文解析之Image Restoration Using Very Deep Convolutional Encoder-Decoder Networks with Symmetric Skip Co
- 用java实现一个基于堆排序的优先队列