新手问题 如何获取自动登陆一个系统 API 入口?

topswim · 2016年03月30日 · 最后由 topswim 回复于 2016年03月31日 · 1888 次阅读

我们公司最近有个需求想从 aruba Airwave api 获取数据。对方公司给我提供了一个例子使用 curl 实现的,下面是例子:

curl -k -c /tmp/cjar -d "credential_0=admin" -d "credential_1=admin" -d "destination=/" -d "login=Log In" https://10.162.117.19/LOGIN
curl -k -b /tmp/cjar --output /tmp/ap_detail.xml https://10.162.117.19/ap_detail.xml

我想用 ruby 实现,于是安装了 Mechanize,但是由于对方服务是 https,我也参照网上例子加了 SSL 设置,代码如下:

a= Mechanize.new {|a| a.ssl_version,a.verify_mode="SSLv3",OpenSSL::SSL::VERIFY_NONE}

但是 get 的时候还会提示:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server hello A: sslv3 alert handshake failure

请大家帮我看看如何把 curl 版的例子写成 ruby 脚本!!!

还有问题就是我用https://github.com/Mechanize,没有制定 SSL 版本什么,直接使用这个网址测试

Mechanize.new.get("https://github.com/")

Mechanize 就返回了结果。为什么同样是 https 服务,有的就直接可以 get 有的就不行?

我对 openssl 了解太少啊!希望大家指教!

应该用的不是 SSLv3,这个早没人用的。

用 Mechanize 多费劲,你这个获取 API 又不是模拟点击,用 rest-client 比较好。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号