说我有以下curl
电话:
"curl -v --insecure -X POST -H 'Host: api.test.com' -H 'Tester #{@@test_name}' -d 'token=#{token_raw}' https://teststage.BLAHBLAH:token/terminate"
我正在尝试获取curl调用的输出。例如200 OK
或404 ERROR
状态。
所以,如果我这样做:
a = `curl -v --insecure -X POST -H 'Host: api.test.com' -H 'Tester #{@@test_name}' -d 'token=#{token_raw}' https://teststage.BLAHBLAH:token/terminate`
我在a
然而,如果我这样做
puts `curl -v --insecure -X POST -H 'Host: api.test.com' -H 'Tester #{@@test_name}' -d 'token=#{token_raw}' https://teststage.BLAHBLAH:token/terminate`
然后我可以看到输出。我如何将其读入变量。如果可能的话,我更喜欢没有像OPEN3那样导入的答案。
答案 0 :(得分:3)
我不确定为什么
a = `curl -v --insecure -X POST -H 'Host: api.test.com' -H 'Tester #{@@test_name}' -d 'token=#{token_raw}' https://teststage.BLAHBLAH:token/terminate`
不适合你。
这是我通过更简单的测试得到的结果:
RUBY_VERSION # => "1.9.3"
`curl --version`
# => "curl 7.30.0 (x86_64-apple-darwin13.0) libcurl/7.30.0 SecureTransport zlib/1.2.5\nProtocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp \nFeatures: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz \n"
a = `curl http://echo.jsontest.com/hello/world`
a # => "{\"hello\": \"world\"}\n"
<强>更新强>
我错过了你问题的一部分,并没有意识到你在寻找标题。
试试这个:
a = `curl -I http://echo.jsontest.com/hello/world`
a.lines.first # => "HTTP/1.1 200 OK\r\n"
希望这有帮助。
答案 1 :(得分:1)
你可能只想使用Ethon与libcurl接口而不是调用shell接口,特别是如果你不愿意使用Ruby提供的工具来更容易地与shell和其他进程连接(你知道,像Open3)。
注意:Ruby标准库(包括Open3)是Ruby的一部分并随之分发。它绝不是一种导入,但如果您真的不想使用require
方法出于某种无聊的原因,IO
可以在不加载其他代码的情况下使用,并提供Open3利用的低级接口
答案 2 :(得分:1)
试试这个:
HTTP_RESP_CODE=$(curl -s -o out.html -w '%{http_code}' http://www.example.com)
echo $HTTP_RESP_CODE
这适用于我的ruby
。
HTTP_RESP_CODE=`curl -s -o out.html -w '%{http_code}' http://www.example.com`
print HTTP_RESP_CODE