我有一个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)。
然后,我解析该临时文件以查找数字,但这对我来说似乎很脆弱。
我想从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)
我使用Postman及其工作来完成此操作,但我想知道如何使用httpie 来完成此操作?
我还尝试了 SOF 和 GitHub 上的可用解决方案,但无法找出问题所在。
在HTTPie中如何获取响应头。当我打电话时
http https://staging3.website.com Host:staging3.website.com
Run Code Online (Sandbox Code Playgroud)
我得到了标头和正文响应。如何仅获取响应标头
根据官方文档, httpie工具也适用于Windows 10,但是当我在终端中运行命令时,它只是挂起而没有任何反应:
$ http :8000/
Run Code Online (Sandbox Code Playgroud)
有没有解释发生了什么,最好是解决方法?
在卷曲中,我可以连接私钥,客户端证书和这样的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文件,但这不起作用.
我有一个简单的 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) 我有一个基本的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)
永远都是空的.这里有什么问题?