我正在尝试编写一个简单的perl脚本调用和API,如果状态代码是2xx,则对响应做一些事情.如果它是4xx或5xx,那么做其他事情.
我遇到的问题是我能够获得响应代码(使用自定义写出格式化程序并将输出传递到其他地方)或者我可以得到整个响应和标题.
my $curlResponseCode = `curl -s -o /dev/null -w "%{http_code}" ....`;
只会给我状态代码.
my $curlResponse = `curl -si ...`;
会给我整个标题加上回复.
我的问题是如何从服务器获取响应主体和http状态代码以一种简洁的格式,允许我将它们分成两个独立的变量.
不幸的是,我不能使用LWP或任何其他单独的库.
提前致谢.
-Spencer
最佳答案
…Will give me the entire header plus the response.
…in a neat format that allows me to separate them into two separate variables.
由于标题和正文仅由空行分隔,因此您可以拆分此行上的内容:
my ($head,$body) = split( m{\r?\n\r?\n},`curl -si http://example.com `,2 );
并从标题中获取状态代码
my ($code) = $head =~m{\A\S+ (\d+)};
您也可以将它组合成一个带有正则表达式的表达式,尽管这可能更难理解:
my ($code,$body) = `curl -si http://example.com`
=~m{\A\S+ (\d+) .*?\r?\n\r?\n(.*)}s;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。