我试图点击API来获取值,但是api提示我进行身份验证,我应该提供用户名和密码。 我尝试使用其他API,我能够获取数据。想知道如何进行此身份验证。我对Ruby很陌生,这就是我的工作方式:
require 'open-uri'
require 'json'
result = JSON.parse(open("http://api.geonames.org/searchJSON?q=london&maxRows=10&username=demo").read)
puts "#{result}"
答案 0 :(得分:3)
我不熟悉这项服务,但很可能你可以试试Basic Authentication
result = JSON.parse(open("http://username:password@api.geonames.org/searchJSON?q=london&maxRows=10&username=demo").read)
正如@Slicedpan建议的那样,您也可以使用open
s options
arguments:
result = JSON.parse(open("http://api.geonames.org/searchJSON?q=london&maxRows=10&username=demo", :http_basic_authentication=>['user', 'password']).read)
如果您收到SSL错误,请查看此blog post:
错误 ---你见过其中一条错误信息吗?
openssl::ssl::sslerror: ssl_connect returned=1 errno=0 state=sslv3 read server certificate b: certificate verify failed could not load openssl. you must recompile ruby with openssl support or change the sources in your gemfile from 'https' to 'http'.
有关使用rvm使用openssl进行编译的说明,请访问: rvm.io/packages/openssl。
使用RVM修复SSL证书 ---最新版本的RVM Ruby Version Manager包含一个实用程序,用于诊断和解决由过时引起的错误 证书文件。请参阅文章Installing Rails 说明和建议。 RVM网站解释了how to install RVM。
如果您已安装RVM,请尝试以下操作:
$ rvm -v # rvm 1.19.1 (stable) $ rvm osx-ssl-certs status all # Certificates for... $ rvm osx-ssl-certs update all # Updating certificates...