标签: httpie

如何在bash脚本中使用HTTPie捕获实际的响应代码和响应正文?

我有一个bash脚本,可以使用HTTPie调用多个API。我想捕获响应主体和HTTP状态代码。

这是我到目前为止所能做到的最好的:

rspBody=$( http $URL --check-status --ignore-stdin )
statusCode=$?
Run Code Online (Sandbox Code Playgroud)

命令替换使我可以获取主体,而“ --check-status”标志为我提供了与代码族相对应的简化代码(例如0、3、4等)。

问题是我需要区分是401代码还是404代码,但我只能得到4。

有没有一种方法可以获取实际的状态代码,而不必进行冗长的转储到文件中并解析内容?

[编辑]

这是我的解决方法,以防他人受骗,但如果您有一个建议,我仍然希望有一个更好的主意:

TMP=$(mktemp)
FLUSH_RSP=$( http POST ${CACHE_URL} --check-status --ignore-stdin 2> "$TMP")
STAT_FAMILY=$?

flush_err=$(cat "$TMP" | awk '{
  where = match($0, /[0-9]+/)
  if (where) {
    print substr($0, RSTART, RLENGTH);
  }
}' -)
rm "$TMP"
Run Code Online (Sandbox Code Playgroud)

STDERR包含一个(通常)带有HTTP代码的3行消息,因此我将其转储到临时文件中,仍然能够捕获变量中的响应正文(来自STDOUT)。

然后,我解析该临时文件以查找数字,但这对我来说似乎很脆弱。

bash httpie

3
推荐指数
1
解决办法
1730
查看次数

如何使用 HTTPie 发送嵌套 JSON 的 POST 请求?

我想从Windows shell使用HTTPie发送POST请求

JSON 输入看起来像:

{
    "name": "pub1",
    "email": "support@pub1.com",
    "address": {
        "city": "new york",
        "pincode": 12345
    }
}
Run Code Online (Sandbox Code Playgroud)

我努力了:

http -v POST http://127.0.0.1:8000/publication/ name=pub1 email=support@pub1.com address:="{"city":"new york", "pincode":12345}"
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

http: error: "address:={city: new": Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Run Code Online (Sandbox Code Playgroud)

httpie json错误

我使用Postman及其工作来完成此操作,但我想知道如何使用httpie 来完成此操作?

我还尝试了 SOF 和 GitHub 上的可用解决方案,但无法找出问题所在。

json cmd httpie

3
推荐指数
1
解决办法
2269
查看次数

Httpie如何只获取响应头

在HTTPie中如何获取响应头。当我打电话时

http https://staging3.website.com Host:staging3.website.com
Run Code Online (Sandbox Code Playgroud)

我得到了标头和正文响应。如何仅获取响应标头

httpie

3
推荐指数
1
解决办法
2947
查看次数

Httpie挂在Windows 10的Git Bash终端上

根据官方文档, httpie工具也适用于Windows 10,但是当我在终端中运行命令时,它只是挂起而没有任何反应:

$ http :8000/
Run Code Online (Sandbox Code Playgroud)

有没有解释发生了什么,最好是解决方法?

httpclient git-bash httpie

2
推荐指数
1
解决办法
484
查看次数

如何在HTTPie中使用CA(如curl的--cacert)

在卷曲中,我可以连接私钥,客户端证书和这样的ca证书

curl --cert cert.pem --key key.pem --cacert ca.pem https://example.org
Run Code Online (Sandbox Code Playgroud)

我可以在HTTPie中看到--cert和--cert-key选项,但是如何在HTTPie中使用--cacert选项?

我尝试将cert.pem和ca.pem组合在一个新文件中并将其用作我的--cert文件,但这不起作用.

ssl curl httpie

2
推荐指数
1
解决办法
682
查看次数

Flask 应用程序 - 查询参数从请求参数中删除

我有一个简单的 Flask 应用程序(Flask 版本1.0.3),只有一个应用程序。/ask用于处理(名称、值)对的 POST 查询字符串的URL 和处理程序,但该request.args对象不存储所有参数对,仅存储第一对。为什么其他人都退学了?

我已经尝试打印出该request.args对象,但它只显示第一个参数对。

这是 Flask 应用程序

import json

from flask import (
    Flask,
    jsonify,
    request,
    Response
)


app = Flask(__name__)


@app.route('/')
def home():
    return jsonify(message="Hello, World!")


@app.route('/ask', methods=['POST'])
def ask():
    return str(request.args)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

Run Code Online (Sandbox Code Playgroud)

这是使用 CLI 工具的简单查询http,带有两个参数和响应参数 - 请注意响应参数仅包含第一个参数

$ http POST http://127.0.0.1:5000/ask?q1=name&q2=address
[1] 58720
[2019-06-12 15:29:27 $ HTTP/1.0 200 OK
Content-Length: 36
Content-Type: text/html; charset=utf-8
Date: Wed, 12 Jun …
Run Code Online (Sandbox Code Playgroud)

bash curl httpie

2
推荐指数
1
解决办法
1245
查看次数

如何使用HTTPie发送POST请求?

我有一个基本的silex应用程序,我尝试使用HTTPie进行测试.然而,使用时发布:

http POST http://localhost:1337 data="hello world"
Run Code Online (Sandbox Code Playgroud)

data,我是从通过请求对象获取:

$data = $request->request->get('data');
Run Code Online (Sandbox Code Playgroud)

永远都是空的.这里有什么问题?

post http silex httpie

1
推荐指数
2
解决办法
5291
查看次数

标签 统计

httpie ×7

bash ×2

curl ×2

cmd ×1

git-bash ×1

http ×1

httpclient ×1

json ×1

post ×1

silex ×1

ssl ×1