httpie

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

其有特点如下:

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

使用Python语言编写

一 、环境搭建

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

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

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">C</span>:\<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Users</span>\<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">zhiwang</span>><span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">http</span>
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">usage</span>: <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">http-script</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.py</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--json]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--form]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--pretty {all,colors,format,none}]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--style STYLE]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--print WHAT]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--verbose]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--headers]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--body]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--stream]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--output FILE]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--download]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--continue]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--session SESSION_NAME_OR_PATH | --session-read-only SESSION_NAME_OR_PATH]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--auth USER[:PASS]</span>] <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--auth-type {basic,digest}]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--proxy PROTOCOL:PROXY_URL]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--follow]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--verify VERIFY]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--cert CERT]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--cert-key CERT_KEY]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--timeout SECONDS]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--check-status]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--ignore-stdin]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--help]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--version]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--traceback]</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[--debug]</span>
                      <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[METHOD]</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">URL</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[REQUEST_ITEM [REQUEST_ITEM ...]</span>]
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">http-script</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.py</span>: <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">error</span>: <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">too</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">few</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">arguments</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>

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

二、基本操作

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">模拟提交表单
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> -f POST yhz.me username=nate

显示详细的请求
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> -v yhz.me

只显示Header
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> -h yhz.me

只显示Body
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> -b yhz.me

下载文件
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> -d yhz.me

请求删除的方法
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> DELETE yhz.me

传递JSON数据请求(默认就是JSON数据请求)
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> PUT yhz.me name=nate password=nate_password
如果JSON数据存在不是字符串则用:=分隔,例如
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> PUT yhz.me name=nate password=nate_password age:=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span> <span class="hljs-operator" style="box-sizing: border-box;">a</span>:=<span class="hljs-constant" style="box-sizing: border-box;">true</span> streets:=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'["a", "b"]'</span>

模拟Form的Post请求, Content-Type: application/x-www-form-urlencoded; charset=utf-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--form POST yhz.me name='nate'</span>
模拟Form的上传, Content-Type: multipart/form-data
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> -f POST example.com/jobs name=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'John Smith'</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">file</span>@~/test.pdf

修改请求头, 使用:分隔
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> yhz.me  User-Agent:Yhz/<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span>  <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'Cookie:a=b;b=c'</span>  Referer:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span>://yhz.me/

认证
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> -<span class="hljs-operator" style="box-sizing: border-box;">a</span> username:password yhz.me
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--auth-type=digest -a username:password yhz.me</span>

使用<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span>代理
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--proxy=http:http://192.168.1.100:8060 yhz.me</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">http</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">--proxy=http:http://user:pass@192.168.1.100:8060 yhz.me</span></code>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值