在rails里访问webservice跟访问RSS Feeds一样简单(见本博处女作),有很多种不同的方式,SOAP,REST是最常见的2种,这里介绍一下REST方式。
【清单一】
require 'net/http'
class Expedia::Request
attr_reader :error, :ticket_str, :total
@@site = "http://www.travelnow.com"
@@path = "#{@@site}/external/xmlinterface.jsp?cid=******&resType=air&intfc=ws&xml="
def initialize(params = {})
@trip_type = params[:trip_type]
@depart_city = params[:depart_city]
@arr_city = params[:arr_city]
@depart_date = params[:depart_date]
@ret_date = params[:ret_date]
@fare_class = params[:fare_class]
@adult_passengers = params[:adult_passengers]
@senior_passengers = params[:senior_passengers]
@children = params[:children] #INF,INS,C02,C11...
end
def send
#生成需要发送的请求数据,追加在@@path后面
xml = Builder::XmlMarkup.new
request_xml = xml.AirSessionRequest(:method=>"getAirAvailability"){
xml.AirAvailabilityQuery{
xml.originCityCode(@depart_city)
xml.destinationCityCode(@arr_city)
if @ret_date != ""
xml.returnDateTime(@ret_date.to_s)
end if
# fill xml request with proper data
xml.departureDateTime(@depart_date.to_s)
xml.fareClass(@fare_class)
xml.tripType(@trip_type)
xml.searchWindow("12")
xml.Passengers{
if @adult_passengers != "0"
xml.adultPassengers(@adult_passengers)
end
if @senior_passengers != "0"
xml.seniorPassengers(@senior_passengers)
end
if @children != ""
xml.childCodes(@children)
end
}
}
}
Net::HTTP.version_1_2
#发送请求,处理返回的结果。结果是一个XML格式的字符串。
@@path = @@path + CGI.escape(request_xml)
@@path = URI.parse(@@path)
#调用HTTP.get方法是访问webservice的关键。
@ticket_str = Net::HTTP.get(@@path).gsub(/\n?\r?/,'')
end
范例程序访问的webservice是expedia提供的,如果你想运行该程序,必须用六位数字替换cid=******中的'*',详细内容请参考:
https://www.ian.com/xmldocs/xml_ws/air/airAvailList.shtml
分享到:
相关推荐
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...
RailsGACL 是大名鼎鼎的 PhpGACL 的 ... 它是用 Rails,一种当前十分被看好的被用来创建动态网页的脚本语言,编写的(因此被叫做 RailsGACL).RailsGACL 中的 GACL 代表 Generic Access Control List,即通用访问控制列表.
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
打开“Terminal”视图,输入`rails server`启动服务器,然后在浏览器中访问`http://localhost:3000`查看你的应用。 在开发过程中,Aptana的调试工具是必不可少的。你可以设置断点,单步执行代码,查看变量值,帮助...
### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
默认情况下,Mongrel服务器会在本地的3000端口监听,你可以通过浏览器访问`http://localhost:3000`来查看Rails的主界面。 **知识点6:测试Rails应用程序** 创建并启动Rails应用程序后,我们可以进行简单的测试。在...
从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...
Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...
标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...
- 引擎路由(Engine Routes)定义了引擎中各个组件的路由规则,使主应用能够通过路由访问引擎的功能。 - 引擎挂载(Engine Mounting)是指将引擎组件整合进主Rails应用中的过程,通过定义挂载点来实现。 3. 组件...
7. **public**:静态资源,如图片、CSS和JavaScript文件,可以直接被浏览器访问。 8. **test**:测试代码,Rails支持TDD(Test-Driven Development)和BDD(Behavior-Driven Development)。 9. **tmp**:临时文件...
rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...
### Rails 101S: 初学者必备的Ruby on Rails 宝典 #### Introduction: 深入了解Ruby on Rails 《Rails 101S》是一本为Ruby on Rails初学者准备的手册,旨在帮助新手快速入门并掌握基本的开发技能。本手册将从最...
[Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...
Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...
在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...
标题 "rails2.3.2" 指的是 Ruby on Rails 框架的一个特定版本,即 2.3.2。Ruby on Rails(通常简称为 Rails)是一个基于 Ruby 语言的开源 Web 应用程序框架,它遵循 Model-View-Controller (MVC) 设计模式,用于构建...
Rails是Ruby编程语言的一个著名框架,用于开发Web应用程序。它以MVC(模型-视图-控制器)架构模式为基础,提供了许多内置功能,使开发者能够更高效地编写代码。在这个"rails本地安装包完整版"中,包含了Rails 2.1.0...
**中文版Rails教程** Rails,全称为Ruby on Rails,是一个基于Ruby编程语言的开源Web应用程序框架,遵循MVC(模型-视图-控制器)架构模式。Rails以其“约定优于配置”(Convention over Configuration)和“Don't ...