2009-07-09 30 views
0

我處理從期望接收方法服務器的SOAP Web服務調用與格式的要求PARAMATERS的:SOAP :: RPC ::驅動程序格式問題。我該如何改變它?</p> <pre><code><urn:offeringId> 354 </urn:offeringId> </code></pre> <p>但SOAP RPC ::驅動程序::正在生成郵件形式:

<offeringId xsi:type = "xsd:int">354</offeringId> 

服務器保留時,它得到這些消息示數(尤其是因爲它的預期offeringId是一個自定義類型的內部本身,而不是一個int)。

是否有配置驅動程序來格式化服務器期待它的方式。服務器甚至在做SOAP嗎?我很難找到對SOAP格式化的引用(我知道它的確可以工作,因爲SOAPUI對這種類型的消息工作正常)。

-Jenny

編輯:我有至少部分的它解決。 RPC :: Driver(顯然)使用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([])) 

我真正知道的是,我有需要在某些參數的方法....我真不不明白爲什麼,如果這種方法做到了我認爲的那樣,它就會變得更加複雜。這不就是採取完全相同的數據並以不同的方式進行格式化嗎?我很困惑....

回答

0

好的,我最終做的是使用SOAP:RPC:驅動程序add_document_method,它需要我給它的wsdl,名稱空間等,然後將它的屬性稍後作爲一個單一的輸入哈希thingy(並以類似的格式給我輸出)。它的工作,它只是沒有像add_rpc_method乾淨(這是add_method默認爲)

-Jenny

相關問題