在Ruby中与Yahoo Placemaker交互
我正试图使用在Ruby中与Yahoo Placemaker交互,ruby,api,yahoo-api,net-http,Ruby,Api,Yahoo Api,Net Http,我正试图使用net/http与Yahoo Placemaker API进行交互,但我似乎无法让它正常工作。以下是我到目前为止的情况: host = 'wherein.yahooapis.com' payload = { 'documentContent' => 'Columbus Ohio', 'appid' => APP_ID, 'outputType' => 'json', 'documentType' => 'text/plain'
net/http
与Yahoo Placemaker API进行交互,但我似乎无法让它正常工作。以下是我到目前为止的情况:
host = 'wherein.yahooapis.com'
payload = {
'documentContent' => 'Columbus Ohio',
'appid' => APP_ID,
'outputType' => 'json',
'documentType' => 'text/plain'
}.to_json
req = Net::HTTP::Post.new('/v1/document', initheader = { 'Content-Type' =>'application/json'})
req.body = payload
response = Net::HTTP.new(host).start {|http| http.request(req) }
puts "Response #{response.code} #{response.message}: #{response.body}"
这给了我以下错误:
Errno::ECONNREFUSED: Connection refused - connect(2)
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:762:in `initialize'
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:762:in `open'
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:762:in `connect'
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:744:in `start'
from /Users/Kyle/Desktop/skateparks-web/lib/yahoo/placemaker.rb:21:in `extract'
from (irb):3
from /Users/Kyle/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
可能只是打字错误
@host
应该是host
对吗?您正在向他们发送json,他们似乎在帖子正文中查找常规查询字符串。此外,您可能应该使用httparty来使用web服务,除非您有充分的理由不:
require 'httparty'
class Yahoo
include HTTParty
base_uri 'http://wherein.yahooapis.com/'
end
json = Yahoo.post '/v1/document', :body => {:documentContent => 'Columbus Ohio', :appid => APP_ID, :outputType => 'json', :documentType => 'text/plain'}
我已经修正了打字错误,但现在我得到了一个不同的错误。我已经用输出更新了我的问题。虽然这个解决方案可行,但我真的想坚持使用w/
net/http
,因为它是std库的一部分,使用httparty
将为我已经臃肿的应用程序添加另一块宝石。不过我很感谢你的帮助!解决方案是在帖子正文中使用标准查询字符串格式(foo=1&bar=2)。httparty代码只是一种奖励。PlaceMaker在2012年成为PlaceSpotter。雅虎!BOSS API(包括PlaceSpotter)将于2016年3月31日关闭。如果您正在寻找替代品或替代品,您应该查看开源项目CLAVIN或最近发布的Geoparser.io API。
require 'httparty'
class Yahoo
include HTTParty
base_uri 'http://wherein.yahooapis.com/'
end
json = Yahoo.post '/v1/document', :body => {:documentContent => 'Columbus Ohio', :appid => APP_ID, :outputType => 'json', :documentType => 'text/plain'}