- 浏览: 142010 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wyasd123:
hi,你好,按照以上步骤配置,执行:isql -v SQL20 ...
SQLServer on Rails -
smallwolf:
总结得不够详细啊
searchLogic心得
选择
ruby带有soap4r的插件,可以用于访问web service服务接口,但不支持basic_auth、WS-Security
因此选用handsoap作为客户端插件
安装
#curb在window下安装很麻烦,改为指定httpclient #sudo gem install handsoap curb nokogiri httpclient --no-ri --no-rdoc sudo gem install handsoap nokogiri httpclient --no-ri --no-rdoc #如果安装curb过程报cannot find -lcur错误,则运行 sudo apt-get install libcurl4-openssl-dev
#environment.rb中加入 config.gem 'handsoap', :lib => 'handsoap', :source => "http://gems.github.com" #curb在window下安装很麻烦,改为指定httpclient,environment.rb中最底部加入 Handsoap.http_driver=:httpclient
使用
#生成客户端类 script/generate handsoap http://192.168.1.20:8081/cmis/webService/ciisStatService?wsdl
配置管理员需要配置的地方在这里(用户、密码、接口地址)
#生成的连接地址加入environments/production.rb中 CIIS_USERNAME = 'cogent' CIIS_PASSWORD = 'cogent' CIIS_STAT_SERVICE_IMPL_SERVICE_ENDPOINT = { :uri => 'http://192.168.1.20:8081/cmis/webService/ciisStatService', :version => 1 }
#script/console s = Ciis::PopService.find_pop '%' #获取列表对象 s.list #获取列表对象中的内容 s.list.first.name #获取属性值 s.size
调试
使用soapui访问webservice接口,确保服务正常
为了监控客户端与服务器的交互内容,可使用tcpmon架设代理
注意,连接接口时要设置用户名密码,双击某个接口方法的请求(一般为request1),点击弹出的右边窗口左下方的[Aut],输入用户名、密码
然后在Request1窗口中点击右键,选择[Add WSS
Username Token],会看到请求的xml中增加了用户名、密码
问题
#按照handsoap官方说明无法实现ws-security的访问 #提示Security processing failed (actions mismatch) #经过尝试,以下调用是成功的 def on_create_document(doc) #register namespaces for the request doc.alias 'tns', 'http://ws.stat.wsif.cogent.com/' doc.alias 's', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' header = doc.find("Header") header.add "s:Security" do |s| #增加此节点,否则会报错 s.add "s:UsernameToken" do |t| t.add "s:Username", "cogent" t.add "s:Password", "cogent" end end end
[第二个问题]开发环境下报错:ArgumentError: A copy of Ciis::PopService has been removed from the module tree but is still active!
#重现步骤 script/console Ciis::PopService.find_pop('%') reload! #再次执行报错 Ciis::PopService.find_pop('%')
产品环境下没问题,但由于开发环境下class会被缓存,而handsoap静态方法引用了实例对象
在handsoap源代码中发现以下语句
@@instance = {} def self.instance @@instance[self.to_s] ||= self.new end def self.method_missing(method, *args, &block) if instance.respond_to?(method) instance.__send__ method, *args, &block else super end end
因此在开发环境下需要重载instance静态方法
#config/initializers/fixed_handsoap_reload_error.rb unless development? module Handsoap class Service def self.instance self.new end end end end
#测试是否解决问题了 script/console #确保每次获取的实例对象不一样 Ciis::PopService.instance Ciis::PopService.instance
发表评论
-
Linux命令
2011-06-22 16:10 1069shell的种类 Linux中的shell有多种类型, ... -
install vim
2011-05-24 10:37 1586sudo apt-get install ruby libop ... -
flash提示问题
2011-05-13 16:13 988一个页面有多个form提交,而且要分别校验信息,信息不对时出现 ... -
windows下虚拟ubuntu文件共享
2011-05-09 17:14 2366在Vmware中安装linux,可 ... -
性能分析
2011-05-09 11:24 924异常分析 采用exception_logger记录异常信 ... -
全文检索
2011-05-09 11:23 1065全文检索(Ferret) 由于sphinx只能支持mys ... -
敏捷开发流程
2011-05-09 11:20 1334敏捷开发流程 需 ... -
安装环境
2011-05-09 11:17 1039操作系统安装 #安装ubuntu8.04桌面版(服务器装 ... -
rails常用插件
2011-05-09 11:13 1450实体相关 restful_authentication [ ... -
memcached安装使用
2011-05-09 11:09 1450安装 wget http://cloud.git ... -
Linux常用命令
2011-05-09 11:07 731常用命令 #执行上次命令 !! #进入上次访问的目录 ... -
ruby入门
2011-05-09 11:03 1196ruby入门 Ruby API查询 Ruby 正则表达 ... -
如何开始rails项目
2011-05-09 10:51 1032转自:http://saberma.me/rail ... -
I18n实现多语言包
2011-05-03 10:26 1一、Rails I18n(国际化) Rails在 2.2 ... -
SQLServer on Rails
2011-04-29 09:57 2356安装库 安装unixODBC sudo apt-get i ... -
svn集中存储
2011-04-28 16:55 1526安装 #git-svn sudo apt-get insta ... -
vim安装使用及快捷键设置问题
2011-04-28 15:56 2822安装sudo apt-get install libncurs ... -
oracle on rails
2011-04-28 15:30 1218Oracle on Rails #如果生产环境使用Oracle ... -
8.04 开发环境搭建
2011-04-27 11:10 1292#安装ubuntu8.04桌面版(服务器装服务器版) #之后修 ... -
I18n实现多语言包
2011-04-26 15:17 9483转自:http://yangzb.iteye.com/blog ...
相关推荐
C++开发SOAP客户端应用教程 本文档将指导读者如何使用Visual C++开发一个简洁的SOAP客户端应用程序,并介绍SOAP API的运用。SOAP是一种特别流行的交换信息用的协议,能够与HTTP、SMTP和其他类似协议协同工作。为了...
接着,是SOAP客户端的构建。在MFC中,你可以使用CInternetSession和CFtpConnection等类来建立与服务端的连接。gSoap库同样提供了客户端SDK,允许你生成与服务端通信所需的代理类。这些代理类封装了SOAP消息的构建和...
3. **创建SOAP客户端**:使用像Java的Apache CXF、.NET的SoapHttpClient或者Python的zeep这样的库,这些库通常提供了处理SOAP和附件的API。 4. **设置MTOM或SwA支持**:在客户端配置中启用MTOM或SwA支持。例如,在...
**SOAP客户端工具详解** 在IT行业中,Web服务的交互是一个重要的环节,而SOAP(Simple Object Access Protocol)协议作为XML(eXtensible Markup Language)格式的网络通信协议,广泛用于分布式系统之间的数据交换...
ZeepPython SOAP clienthon SOAP 客户端亮点兼容 Python 3.9、3.10、3.11、3.12、3.13 和 PyPy3基于 lxml、requests 和 httpx 构建支持 Soap 1.1、Soap 1.2 和 HTTP 绑定支持 WS-Addressing 标头支持 WSSE ...
通过SAAJ,开发者可以构建SOAP客户端来发起请求,或创建SOAP服务来接收和响应请求。SAAJ支持同步消息传递模式,即请求-响应模式,其中客户端发送一个请求,然后等待服务器的响应。 **JAXM(Java API for XML ...
标题“Node.js-node.js的SOAP客户端和服务器”表明我们将讨论如何在 Node.js 中使用 `node-soap` 模块来创建 SOAP 客户端和服务器,以便与外部Web服务进行通信,或构建自己的SOAP API。 描述中的“此模块允许您使用...
### 使用Visual C++开发SOAP客户端应用 #### 一、引言 SOAP(Simple Object Access Protocol,简单对象访问协议)是一种轻量级协议,用于在Web应用程序之间交换结构化的信息。它基于XML,允许应用程序跨平台、跨...
SOAPEngine 是通用的 SOAP 客户端,允许你使用一个 iOS 或者 OS X 应用访问 WEB 服务。使用 SOAPEngine 这个框架可以创建 iPhone,iPad 和 Mac OS X 支持 SOAP 客户端协议的应用。 标签:SOAPEngine
node-soap, 用于 node.js的SOAP客户端和服务器 Soap 用于 node.js.的SOAP客户端和服务器这里 MODULE 允许你使用SOAP连接到 Web服务 。 它还提供了一个服务器,允许你运行自己的SOAP服务。特性:安装失败为什么我不能...
SOAP客户端是使用SOAP协议与远程Web服务进行通信的应用程序。在本案例中,我们将探讨如何创建和使用SOAP客户端,特别是在使用Apache Axis2工具时。 首先,`TestClient.java`文件可能包含了SOAP客户端的Java代码示例...
在使用Savon时,你需要定义SOAP客户端,提供服务的WSDL(Web Service Description Language)地址。WSDL文件是一个XML文档,包含了服务的所有方法、参数和返回类型。Savon会自动分析这个文件,生成对应的客户端API。...
Node-SOAP 是基于 Node.js 的 SOAP 客户端和服务器。 该模块可以让你使用SOAP连接到Web服务。它还提供了一个服务器,它允许你运行你自己的SOAP服务。特性非常简单的 API可以处理 RPC 和 Document schema 类型支持...
利用gSOAP自带的Calc例子 仿写一个 网络中使用计算器 客户端发送需要操作的数据,服务端计算完之后,将结果返回给客户端 编写之后 我们的服务端可独立使用。像在安装了IIS或者用Apache配置的Web服务器。
在Laravel项目中,使用`laravel-soap`扩展包可以方便地集成SOAP客户端功能。这个扩展包提供了一套简单易用的API,使得开发者无需直接与复杂的SOAP XML交互,而是通过面向对象的方式处理SOAP请求和响应。 **安装与...
本教程将详细讲解客户端如何通过SOAP(Simple Object Access Protocol)请求调用WebService,以实现根据订单号获取订单的物流信息。 **SOAP请求详解** SOAP是一种XML(eXtensible Markup Language)格式的消息协议...
1. **创建SOAP客户端**:利用Toolkit提供的模板和向导,创建SOAP客户端代码。 2. **构建SOAP消息**:根据服务的WSDL定义,手动构造SOAP请求消息。 3. **发送和接收消息**:使用Toolkit的函数发送SOAP请求,并捕获...