Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中与Yahoo Placemaker交互_Ruby_Api_Yahoo Api_Net Http - Fatal编程技术网

在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'}