Tag: 肥皂

Savon:XML标签的数组

我正在使用Savon进行SOAP请求,在SOAP请求XML的某个地方,我需要生成这段代码: 最好的方法是什么?

如何使用Ruby Savon编写SOAP身份validation标头

我是第一次调用基于SOAP的API,我从文档中获得以下信息: 在您的客户端中,构建您的授权标头,如下所示: 1连接用户名和密码,例如:ExampleUsername:ExamplePassword 2在base 64中编码字符串,例如:RXhhbXBsZVVzZXJOYW1lOVV4YW1wbGVQYXNzd29yZA == 3在代码中,输入值为Basic的Authorization标头。 示例Web服务标头,带有编码的用户名和密码 POST https://api.five9.com/wsadmin/AdminWebService HTTP / 1.1 Accept-Encoding:gzip,deflate Content-Type:text / xml; charset = UTF-8 SOAPAction:“” 授权:基本RXhhbXBsZVVzZXJOYW1lOkV4YW1wbGVQYXNzd29yZA == 我正在使用Savongem来打电话。 在给定上述信息的情况下,如何使用Ruby 1.9.3和Savon gemvalidationAPI调用api_call ? 这就是我用来设置WSDL或client 。 client = Savon.client(wsdl: “https://api.five9.com/wsadmin/v2/AdminWebService?wsdl&user=luigi@apitest.com”)

传递Savon 2的数组元素(SOAP)

我正在尝试使用从SOAP api获取帐户信息的Savon gem(v2)在Ruby中编写代码,但是我遇到了传递数组的问题。 CampaignIds应该是一个整数数组。 这是我的代码: client = Savon.client(wsdl: “https://api7secure.publicaster.com/Pub7APIV1/Campaign.svc?singleWsdl”) message = { “EncryptedAccountID” => api_key, “APIPassword” => api_password, “CampaignIds” => [3,4], “StartDate” => yesterday, “EndDate” => yesterday, “IncludeTests” => false } client.call(:get_comparative_report_details_data, message: message) 产生以下要求: ***** ***** 3 4 2014-01-06 2014-01-06 false 然而,如果我在SOUP UI中玩游戏,请求应如下所示: ***** ***** 3 4 2014-01-06T16:21:47-05:00 2014-01-07T16:21:47-05:00 false 有任何想法吗?

空关联数组SOAP类型转换

我有一个客户端服务器场景,其中PHP中的SoapClient类进行类型转换,无法判断空数组是关联的还是数字的,因此默认为数字。 所有公开的函数都使用基本类型,没有类。 诸如array(“something”=>123)类的关联数组将转换为地图数据类型。 但是,当相同的数组为空时,例如array() ,它将转换为Ruby端的数组。 类型转换为object (object)array()将导致Ruby端的struct数据类型。 这个论点有点复杂,不像上面那么简单: array( “options”=>array( “plans”=>array( 0=>array( “name”=>”abc”, “product_options”=>array( “optional_key_determines_associative_array_data_type”=>0, ), ), ), ), ); 如果”product_options”下的数组为空,则它将转换为Ruby中的数组,而不是映射。 再一次,在PHP中输入到对象的类型导致Ruby中的结构。 我可以在PHP方面做些什么来使空的“关联”数组最终成为Ruby方面的地图? PHP 5.3.3,使用SoapClient。 Ruby 1.8.7,Rails 2.3.2使用Action Web Service。

如何在soap4r中为soap调用设置http标头?

如何在soap4r中为soap调用设置http标头? @drv = SOAP::RPC::Driver.new(‘x’, ‘y’) 如何设置http标头“vmware_soap_session”来调用@drv中的调用?

Savon:如何将标题从改为或其他不同的东西

在萨翁,有没有办法改变 成为 还是别的什么? 我已经尝试在请求块中添加一个额外的标头标签,如下所示: soap.header[‘soap:Header’] 但那不行。 我浏览过Savon Docs并且没有找到任何地方来改变那个标签,只能通过手动构建XML。

connect:SSL_connect返回= 1 errno = 0 state = SSLv3读取服务器证书B:证书validation失败(OpenSSL :: SSL :: SSLError)

我很难获得SSL来validation证书。 我完全不了解证书的运作方式,因此这是一个很大的障碍。 这是运行脚本时出现的错误: c:/Ruby191/lib/ruby/1.9.1/net/http.rb:611:in `connect’: SSL_connect returned=1 e rrno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL ::SSL::SSLError) 这是相关的代码: client = Savon::Client.new order_svc request = client.create_empty_cart { |soap, http| http.auth.ssl.cert_file = ‘mycert.crt’ http.auth.ssl.verify_mode = :none http.read_timeout = 90 http.open_timeout = 90 http.headers = { “Content-Length” => “0”, “Connection” => “Keep-Alive” } soap.namespaces[“xmlns:open”] = “http://schemas.datacontract.org/2004/07/Namespace” […]

如何阻止Savon为soap.body添加前缀

这就是我创建一个客户端的方式: @client = Savon::Client.new do wsdl.document = my_document wsdl.endpoint = my_endpoint end 这就是我得到回应的方式: @response = @client.request :the_action do soap.body = xml soap.body = {“applicationId” => my_application_id } end 但是,这会生成以下xml: “XXXXXXXXXXXXXX” 由于前缀,我的soap服务错误。 如果我这样做,它的工作原理: @response = @client.request :the_action do soap.body = “#{my_application_id}” end 然而,由于各种原因,这是一种痛苦。 有没有办法阻止savon附加前缀? 使用savon 0.9.6。

用于ruby 1.9和rails的soap客户端

直到现在我使用soap4r作为Ruby 1.8.x的SOAP客户端,但现在我转向Ruby 1.9.x. 不幸的是soap4r不适用于Ruby 1.9.x我只是得到了“无效的多字节转义”,这似乎无法解决,主要是因为自2007年以来soap4r gem没有更新,所以我认为该项目已经死了。 我看了一下handsoap,但是我必须手工绘制所有的东西,这需要花费几天的时间来完成,这是一个很大的API。 是否有一些其他肥皂客户端自动将所有soap-xml东西映射到ruby-objects(链接soap4r确实),反之亦然?

为什么在使用savon进行ruby soap通信时,“wsdl”命名空间会插入操作名称?

我正在尝试访问我无法控制的SOAP服务。 其中一个操作称为ProcessMessage 。 我按照示例生成了一个SOAP请求,但是我收到一条错误,说该操作不存在。 我将问题追溯到信封体生成的方式。 USER 658e702d5feff1777a6c741847239eb5d6d86e48 2010-02-18T02:05:25Z password …… ProcessMessage标签应该是: 这就是样本Java应用程序生成它时的工作原理。 该标记是我的Ruby应用程序生成的示例和示例Java应用程序之间的唯一区别。 有没有办法摆脱那个标签前面的”wsdl:”命名空间并添加这样的属性。 除此之外,有没有办法强制动作不是通过像身体其他部分一样传递出来的? 这是我的代码: require ‘rubygems’ require ‘savon’ client = Savon::Client.new “https://gmservices.pp.gm.com/ProcessMessage?wsdl” response = client.process_message! do | soap, wsse | wsse.username = “USER” wsse.password = “password” soap.namespace = “http://www.starstandards.org/webservices/2005/10/transport” #makes no difference soap.action = “ProcessMessage” #makes no difference soap.input = “ProcessMessage” #makes no […]