我试图创建一个regex来捕获HTTP状态代码和curl请求的主体。下面的regex模式可以在多个在线站点上工作,但在我的Mac命令行上的shell if-语句中不匹配。是我的regex关闭了还是有其他事情发生?
RESPONSE=$(curl -s -i -X GET http://www.google.com/)
# Match and capture the status code, match the headers, match two new lines, match and capture an optional body
re="^HTTP\/\d\.\d\s([\d]{3})[\w\d\s\W\D\S]*[\r\n]{2}([\w\d\s\W\D\S]*)?$"
if [[ "${RESPONSE}" =~ $re ]]; then
echo "match"
# Now do stuff with the captured groups, "${BASH_REMATCH[...]}"
else
echo "no match"
fi
我也对其他方法持开放态度(我的目标是运行Centos5的机器)。
既然您也对其他解决方案持开放态度,那么您可以尝试一下。
RESPONSE=$(curl -s -i -X GET http://www.google.com/)
HTTP_STATUS_CODE=`echo $RESPONSE | sed '
/HTTP/ {
s/^HTTP[^ ]* //
s/ .*$//
q
}
D'`
BODY=`echo $RESPONSE | sed '
/^.$/ {
:body
n
b body
}
D'`
echo $HTTP_STATUS_CODE
echo $BODY
http_status_code
出现在以http开头的第一行中。每个非空格直到第一个空格被移除,从结果('302 found')中,从第一个空格到行尾的所有内容都被移除。
正文
从匹配单个字符的第一行开始(之前的行用“d”删除)。从这里打印每一行,直到输入结束。
我正在使用 webClient 调用调用服务 1,该服务 1 调用服务 2,然后服务 2 从数据库中获取数据并返回它们。问题:我有 onStatus 来捕获错误的响应,因此响应具有 400 或 500 个状态代码。代码示例: 在一些边缘情况下,响应带有200个状态代码,响应体有失败消息和失败原因。那么我如何检索它,然后用该失败消息抛出异常(在其他服务返回的响应对象中)。因为它试图映射并抛出错误。目
问题内容: 我正在尝试让Apache HttpClient触发HTTP请求,然后显示HTTP响应代码(200、404、500等)以及HTTP响应正文(文本字符串)。重要的是要注意我正在使用,因为那里有大多数HttpClient示例,并且API从版本3到版本4有了很大的变化。 不幸的是,我只能使HttpClient返回状态代码 或 响应正文(但不能同时返回两者)。 这是我所拥有的: 所以我问: 使用
在改版1.9中,RetrofitError仍然存在,我们可以通过以下操作获得状态: 您如何使用RXJava在Registfit2.0中做到这一点?
问题内容: 我有一个API调用,我需要对其进行一些检查并可能返回各种状态代码。我不需要自定义视图或任何东西,我只需要返回正确的代码。如果用户未通过适当的凭据,则需要返回401状态。如果他们尚未发送受支持的请求格式,则需要返回400状态。 因为它是一个API,所以我真正想做的就是设置响应状态并以一条简单的愚蠢消息退出,该消息说明请求失败的原因(可能使用)。刚好足以完成工作,但我还无法使其正常工作。我
我想要ot实现WebFlux示例客户端,它可以用http params发出请求,并获得响应体和http响应代码。我试过这个: 您能在之后给我一些建议吗?我如何获得http状态代码和所有可用的主体。
我使用curl获取http头以查找http状态代码并返回响应。我使用以下命令获取http头