Ruby SOAP::RPC::驱动程序格式化问题。我怎样才能改变它?

Ruby SOAP::RPC::驱动程序格式化问题。我怎样才能改变它?,ruby,soap,soap-client,Ruby,Soap,Soap Client,我正在处理一个来自服务器的SOAP webservice调用,该服务器希望以以下格式接收带有参数的方法调用: <urn:offeringId> 354 </urn:offeringId> 354 但是SOAP::RPC::Driver正在以以下形式生成消息: <offeringId xsi:type = "xsd:int">354</offeringId> 354 服务器在收到这些消息时会不断出错(特别是因为它希望offeringId是自身

我正在处理一个来自服务器的SOAP webservice调用,该服务器希望以以下格式接收带有参数的方法调用:

<urn:offeringId> 354 </urn:offeringId>
354
但是SOAP::RPC::Driver正在以以下形式生成消息:

<offeringId xsi:type = "xsd:int">354</offeringId>
354
服务器在收到这些消息时会不断出错(特别是因为它希望offeringId是自身内部的自定义类型,而不是int)

是否可以配置驱动程序,使其按照服务器所期望的方式格式化。服务器甚至在做SOAP吗?我很难找到对SOAP格式化风格的引用(我知道它确实有效,因为SOAPUI可以很好地处理这种类型的消息)

-珍妮

编辑:我至少解决了部分问题。驱动程序(显然)使用RPC标准,而我试图与之交谈的服务器显然正在执行“文档”。现在,当我看RPC::Driver的API时,我看到了一个名为“add_document_method”的方法。这听起来像是我想要的,但我不知道该给什么样的参数。我在网上看到的例子对我来说没有多大意义,比如:

def GetNamePair(response)
  response.account.each do |x| 
    class << x
      attr :configuration, true    
    end     
    x.configuration = Hash[*x.a.map do |y|
      [y.__xmlattr[XSD::QName.new(nil, 'n')], String.new(y)]
    end.flatten] 
  end
end

mNS = 'urn:zimbraAdmin'
drv.add_document_method('GetAllAdminAccountsRequest', mNS, [XSD::QName.new(mNS, 'GetAllAdminAccountsRequest')],  
  [XSD::QName.new(mNS, 'GetAllAdminAccountsResponse')] )  

puts YAML.dump(GetNamePair(drv.GetAllAdminAccountsRequest([]))
def GetNamePair(响应)
response.account.each do|x|

类好的,我最后做的是使用SOAP:RPC:Drivers添加_document_方法,这要求我为它提供wsdl、名称空间等,然后将属性作为单个输入散列内容提供给它(并以类似的格式提供输出)。它工作了,只是没有add_rpc_方法干净(add_方法默认为)

-珍妮