`
rawbenny
  • 浏览: 14293 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类

rails访问webservice

阅读更多

在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

    《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    RailsGacl Rails应用 通用访问控制列表

    RailsGACL 是大名鼎鼎的 PhpGACL 的 ... 它是用 Rails,一种当前十分被看好的被用来创建动态网页的脚本语言,编写的(因此被叫做 RailsGACL).RailsGACL 中的 GACL 代表 Generic Access Control List,即通用访问控制列表.

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    使用Aptana+Rails开发Rails Web应用(中文)

    打开“Terminal”视图,输入`rails server`启动服务器,然后在浏览器中访问`http://localhost:3000`查看你的应用。 在开发过程中,Aptana的调试工具是必不可少的。你可以设置断点,单步执行代码,查看变量值,帮助...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    默认情况下,Mongrel服务器会在本地的3000端口监听,你可以通过浏览器访问`http://localhost:3000`来查看Rails的主界面。 **知识点6:测试Rails应用程序** 创建并启动Rails应用程序后,我们可以进行简单的测试。在...

    rails2-sample

    从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...

    rails指南 中文版

    Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    component base rails applications

    - 引擎路由(Engine Routes)定义了引擎中各个组件的路由规则,使主应用能够通过路由访问引擎的功能。 - 引擎挂载(Engine Mounting)是指将引擎组件整合进主Rails应用中的过程,通过定义挂载点来实现。 3. 组件...

    rails 项目起步示例

    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 2.3.2离线安装rails 2.3.2离线安装rails ...

    Rails 101S

    ### Rails 101S: 初学者必备的Ruby on Rails 宝典 #### Introduction: 深入了解Ruby on Rails 《Rails 101S》是一本为Ruby on Rails初学者准备的手册,旨在帮助新手快速入门并掌握基本的开发技能。本手册将从最...

    [Rails] Crafting Rails Applications (英文版)

    [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

    Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...

    rails敏捷开发的购物车系统

    在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...

    rails2.3.2

    标题 "rails2.3.2" 指的是 Ruby on Rails 框架的一个特定版本,即 2.3.2。Ruby on Rails(通常简称为 Rails)是一个基于 Ruby 语言的开源 Web 应用程序框架,它遵循 Model-View-Controller (MVC) 设计模式,用于构建...

    rails本地安装包完整版

    Rails是Ruby编程语言的一个著名框架,用于开发Web应用程序。它以MVC(模型-视图-控制器)架构模式为基础,提供了许多内置功能,使开发者能够更高效地编写代码。在这个"rails本地安装包完整版"中,包含了Rails 2.1.0...

    中文版rails教程

    **中文版Rails教程** Rails,全称为Ruby on Rails,是一个基于Ruby编程语言的开源Web应用程序框架,遵循MVC(模型-视图-控制器)架构模式。Rails以其“约定优于配置”(Convention over Configuration)和“Don't ...

Global site tag (gtag.js) - Google Analytics