日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

雷林鹏分享:Ruby Web Services 应用 - SOAP4R

發布時間:2024/1/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 雷林鹏分享:Ruby Web Services 应用 - SOAP4R 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Ruby Web Services 應用 - SOAP4R

  什么是 SOAP?

  簡單對象訪問協議(SOAP,全寫為Simple Object Access Protocol)是交換數據的一種協議規范。

  SOAP 是一種簡單的基于 XML 的協議,它使應用程序通過 HTTP 來交換信息。

  簡單對象訪問協議是交換數據的一種協議規范,是一種輕量的、簡單的、基于XML(標準通用標記語言下的一個子集)的協議,它被設計成在WEB上交換結構化的和固化的信息。

  更多 SOAP 教程請查看:http://www.w3cschool.cc/soap/soap-tutorial.html。

  SOAP4R 安裝

  SOAP4R 由Hiroshi Nakamura開發實現,用于 Ruby 的 SOAP 應用。

  SOAP4R 下載地址:http://raa.ruby-lang.org/project/soap4r/。

  注意:你的ruby環境可能已經安裝了該該組件。

  Linux 環境下你也可以使用 gem 來安裝該組件,命令如下:

  $ gem install soap4r --include-dependencies

  如果你是window環境下開發,你需要下載zip壓縮文件,并通過執行 install.rb 來安裝。

  SOAP4R 服務

  SOAP4R 支持兩種不同的服務類型:

  基于 CGI/FastCGI 服務 (SOAP::RPC::CGIStub)

  獨立服務 (SOAP::RPC:StandaloneServer)

  本教程將為大家介紹如何建立獨立的 SOAP 服務。步驟如下:

  第1步 - 繼承SOAP::RPC::StandaloneServer

  為了實現自己的獨立的服務器,你需要編寫一個新的類,該類為 SOAP::RPC::StandaloneServer 的子類:

  class MyServer < SOAP::RPC::StandaloneServer

  ...............

  end

  注意:如果你要編寫一個基于FastCGI的服務器,那么你需要繼承 SOAP::RPC::CGIStub 類,程序的其余部分將保持不變。

  第二步 - 定義處理方法

  接下來我們定義Web Services的方法,如下我們定義兩個方法,一個是兩個數相加,一個是兩個數相除:

  class MyServer < SOAP::RPC::StandaloneServer

  ...............

  # 處理方法

  def add(a, b)

  return a + b

  end

  def div(a, b)

  return a / b

  end

  end

  第三步 - 公布處理方法

  接下來添加我們在服務器上定義的方法,initialize方法是公開的,用于外部的連接:

  class MyServer < SOAP::RPC::StandaloneServer

  def initialize(*args)

  add_method(receiver, methodName, *paramArg)

  end

  end

  以下是各參數的說明:

  參數描述

  receiver包含方法名的方法的對象。 如果你在同一個類中定義服務方法,該參數為 self。

  methodName調用 RPC 請求的方法名。

  paramArg參數名和參數模式

  為了理解 inout 和 out 參數,考慮以下服務方法,需要輸入兩個參數:inParam 和 inoutParam,函數執行完成后返回三個值:retVal、inoutParam 、outParam:

  def aMeth(inParam, inoutParam)

  retVal = inParam + inoutParam

  outParam = inParam . inoutParam

  inoutParam = inParam * inoutParam

  return retVal, inoutParam, outParam

  end

  公開的調用方法如下:

  add_method(self, 'aMeth', [

  %w(in inParam),

  %w(inout inoutParam),

  %w(out outParam),

  %w(retval return)

  ])

  第四步 - 開啟服務

  最后我們通過實例化派生類,并調用 start 方法來啟動服務:

  myServer = MyServer.new('ServerName',

  'urn:ruby:ServiceName', hostname, port)

  myServer.start

  以下是請求參數的說明:

  參數描述

  ServerName服務名,你可以取你喜歡的

  urn:ruby:ServiceNameHere urn:ruby 是固定的,但是你可以為你的服務取一個唯一的 ServiceName

  hostname指定主機名

  portweb 服務端口

  實例

  接下來我們通過以上的步驟,創建一個獨立的服務:

  require "soap/rpc/standaloneserver"

  begin

  class MyServer < SOAP::RPC::StandaloneServer

  # Expose our services

  def initialize(*args)

  add_method(self, 'add', 'a', 'b')

  add_method(self, 'div', 'a', 'b')

  end

  # Handler methods

  def add(a, b)

  return a + b

  end

  def div(a, b)

  return a / b

  end

  end

  server = MyServer.new("MyServer",

  'urn:ruby:calculation', 'localhost', 8080)

  trap('INT){

  server.shutdown

  }

  server.start

  rescue => err

  puts err.message

  end

  執行以上程序后,就啟動了一個監聽 8080 端口的本地服務,并公開兩個方法:add 和 div。

  你可以再后臺執行以上服務:

  $ ruby MyServer.rb&

  SOAP4R 客戶端

  ruby 中使用 SOAP::RPC::Driver 類開發 SOAP 客戶端。接下來我們來詳細看下 SOAP::RPC::Driver 類的使用。

  調用 SOAP 服務需要以下信息:

  SOAP 服務 URL 地址 (SOAP Endpoint URL)

  服務方法的命名空間(Method Namespace URI)

  服務方法名及參數信息

  接下來我們就一步步來創建 SOAP 客戶端來調用以上的 SOAP 方法:add 、 div:

  第一步 - 創建 SOAP Driver 實例

  我們可以通過實例化 SOAP::RPC::Driver 類來調用它的新方法,如下所示:

  SOAP::RPC::Driver.new(endPoint, nameSpace, soapAction)

  以下是參數的描述:

  參數描述

  endPoint連接 SOAP 服務的 URL 地址

  nameSpace命名空間用于 SOAP::RPC::Driver 對象的所有 RPC .

  soapAction用于 HTTP 頭部的 SOAPAction 字段值。如果是字符串是"" 則默認為 nil

  第二步 - 添加服務方法

  為 SOAP::RPC::Driver 添加 SOAP 服務方法,我們可以通過實例 SOAP::RPC::Driver 來調用以下方法:

  driver.add_method(name, *paramArg)

  以下是參數的說明:

  參數描述

  name遠程web服務的方法名

  paramArg指定遠程程序的參數

  第三步 - 調用SOAP服務

  最后我們可以使用 SOAP::RPC::Driver 實例來調用 SOAP 服務:

  result = driver.serviceMethod(paramArg...)

  serviceMethod SOAP服務的實際方法名,paramArg為方法的參數列表。

  實例

  基于以上的步驟,我們可以編寫以下的 SOAP 客戶端:

  #!/usr/bin/ruby -w

  require 'soap/rpc/driver'

  NAMESPACE = 'urn:ruby:calculation'

  URL = 'http://localhost:8080/'

  begin

  driver = SOAP::RPC::Driver.new(URL, NAMESPACE)

  # Add remote sevice methods

  driver.add_method('add', 'a', 'b')

  # Call remote service methods

  puts driver.add(20, 30)

  rescue => err

  puts err.message

  end

  以上我們只是簡單介紹 Ruby 的 Web Services 。 (編輯:雷林鵬 來源:網絡)

轉載于:https://www.cnblogs.com/pengpeng1208/p/10131234.html

總結

以上是生活随笔為你收集整理的雷林鹏分享:Ruby Web Services 应用 - SOAP4R的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。