Rails [已解决] rails http 请求

kai1248 · 2013年07月21日 · 最后由 kai1248 回复于 2013年07月22日 · 7282 次阅读

我想向百度的服务器请求数据 类似http://api.map.baidu.com/direction/v1?mode=driving&origin=&destination=北京大学&origin_region=北京&destination_region=北京&output=json&ak=E4805d16520de693a3fe707cdc962045清华大学 这样的 URL,请问怎么发送呢? 对 http 不太了解,貌似可以用 weary,httparty,net/http 来做,请问有木有应用的实例能学习一下。

贴代码了 #encoding:utf-8

require "open-uri" require "timeout" require 'rubygems' require "nokogiri"

uri = "http://api.map.baidu.com/direction/v1?mode=driving&origin=&destination=北京大学&origin_region=北京&destination_region=北京&output=xml&ak=E4805d16520de693a3fe707cdc962045上地五街" begin req = open(URI.escape(uri)).read doc = Nokogiri::XML(open(URI.escape(uri)), nil, 'utf-8') # doc.encoding = "utf-8" root = doc.root origin = root.xpath("result/origin/originPt") rescue StandardError,Timeout::Error, SystemCallError, Errno::ECONNREFUSED puts $! else puts origin.xpath("lng").text end

成功获取返回的数据并解决 xml 中文编码问题

每个库都有示例代码,比如用'open-uri',你可以:

=> ruby -r 'open-uri' -e "puts open('http://api.map.baidu.com/direction/v1?mode=driving&origin=&destination=%E5%8C%97%E4%BA%AC%E5%A4%A7%E5%AD%A6&origin_region=%E5%8C%97%E4%BA%AC&destination_region=%E5%8C%97%E4%BA%AC&output=json&ak=E4805d16520de693a3fe707cdc962045').read"
{
    "status":102,
    "message":"Ak or Quota Failure "
}

Check more

很多都可以组,'open-uri',看你的 url 应该是请求 baidu api 的,后面那堆都是参数,这样自己来构造不是很好看,你可以用这个 gem 试试看Faradat

匿名 #3 2013年07月22日

Or rest-client

@loveky 谢谢额,我去看看文档

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