HTTPie (读aych-tee-tee-pie)是一个 HTTP 的命令行客户端。其目标是让 CLI 和 web 服务之间的交互尽可能的人性化。

这个工具提供了简洁的 http 命令,允许通过自然的语法发送任意 HTTP 请求数据,展示色彩化的输出。HTTPie 可用于与 HTTP 服务器做测试、调试和常规交互。

主要特性:

  • 直观的语法
  • 格式化和色彩化的终端输出
  • 内置 JSON 支持
  • 支持上传表单和文件
  • HTTPS、代理和认证
  • 任意请求数据
  • 自定义头部
  • 持久性会话
  • 类 Wget 下载
  • 支持 Python 2.6, 2.7 和 3.x
  • 支持 Linux, Mac OS X 和 Windows
  • 插件
  • 文档
  • 测试覆盖率

HTTPie 是用 Python 编写,用到了 Requests 和 Pygments 这些出色的库。

主页:https://github.com/jakubroztocil/httpie 目前在 Github 获得了 10k+ star。

一 、环境搭建

  1. 首先安装python环境(下载,安装,设置环境变量)
  2. 然后安装easy_install(下载,安装)
  3. 执行 easy_install httpie

测试:
a>windows环境
使用cmd 进入命令行界面:

C:Userszhiwang>http
usage: http-script.py [–json] [–form] [–pretty {all,colors,format,none}]
[–style STYLE] [–print WHAT] [–verbose] [–headers]
[–body] [–stream] [–output FILE] [–download]
[–continue]
[–session SESSION_NAME_OR_PATH | –session-read-only SESSION_NAME_OR_PATH]
[–auth USER[:PASS]] [–auth-type {basic,digest}]
[–proxy PROTOCOL:PROXY_URL] [–follow]
[–verify VERIFY] [–cert CERT] [–cert-key CERT_KEY]
[–timeout SECONDS] [–check-status] [–ignore-stdin]
[–help] [–version] [–traceback] [–debug]
[METHOD] URL [REQUEST_ITEM [REQUEST_ITEM …]]
http-script.py: error: too few arguments

如果能看到此,就说明ok了

二、基本操作

模拟提交表单
http -f POST yhz.me username=nate

显示详细的请求
http -v yhz.me

只显示Header
http -h yhz.me

只显示Body
http -b yhz.me

下载文件
http -d yhz.me

请求删除的方法
http DELETE yhz.me

传递JSON数据请求(默认就是JSON数据请求)
http PUT yhz.me name=nate password=nate_password
如果JSON数据存在不是字符串则用:=分隔,例如
http PUT yhz.me name=nate password=nate_password age:=28 a:=true streets:='[“a”, “b”]’

模拟Form的Post请求, Content-Type: application/x-www-form-urlencoded; charset=utf-8
http –form POST yhz.me name=’nate’
模拟Form的上传, Content-Type: multipart/form-data
http -f POST example.com/jobs name=’John Smith’ file@~/test.pdf

修改请求头, 使用:分隔
http yhz.me  User-Agent:Yhz/1.0  ‘Cookie:a=b;b=c’  Referer:http://yhz.me/

认证
http -a username:password yhz.me
http –auth-type=digest -a username:password yhz.me

使用http代理
http –proxy=http:http://192.168.1.100:8060 yhz.me
http –proxy=http:http://user:pass@192.168.1.100:8060 yhz.me