Rails [已解决] rails http 请求

kai1248 · July 21, 2013 · Last by kai1248 replied at July 22, 2013 · 7272 hits

我想向百度的服务器请求数据 类似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

Unknow user #3 July 22, 2013

Or rest-client

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

You need to Sign in before reply, if you don't have an account, please Sign up first.