Bob*_*eld 7 ruby xml soap wsdl savon
我在Windows 7 Professional 64位上使用带有savon 0.9.2的Ruby 1.9.2.
我需要调用一个Web SOAP服务,它需要一个我从第二个Web SOAP服务获得的安全令牌.我使用的代码如下:
require 'savon'
client = Savon::Client.new "http://some.url?wsdl"
client.wsdl.soap_actions
start_session_response = client.request :start_session do
soap.input = ["StartSession", {:xmlns => "http://some.schema" } ]
soap.body = { :userName => "User", :password => "password" }
end
do_something_response = client.request :do_something do
soap.input = [ "DoSomething", { :xmlns => "http://some.schema"} ]
soap.body = { :securityToken => start_session_response.to_hash[:start_session_response][:security_token] }
end
Run Code Online (Sandbox Code Playgroud)
这导致XML看起来像:
<?xml version="1.0" encoding="utf-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsdl="http://some.schema"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<DoSomething xmlns="http://some.schema">
<wsdl:securityToken>
<wsdl:tokenType>sessiontoken</wsdl:tokenType>
<wsdl:token>
.
.
.
</wsdl:token>
</wsdl:securityToken>
</DoSomething>
</env:Body>
</env:Envelope>
Run Code Online (Sandbox Code Playgroud)
别担心这个XML中的奇怪的命名空间约定(或仅仅是我)是savon做它的事情.
我面临的问题是securitytoken标签内的标签都以小写字母开头,它们应该是大写字母.所以,<tokenType>和<token>本来应该<TokenType>和<Token>.
在我看来,这些标签的定义都在用于创建savon客户端的WSDL中.该定义似乎没有被错误地使用或使用.
如何从savon获取正确的XML/SOAP消息?
Jel*_*Cat 21
对于Savon的后续版本,您应该能够convert_request_keys_to在初始化Savon客户端时提供"全局"选项:
# In Savon 2
Savon.client wsdl:"http://some.url?wsdl", convert_request_keys_to: :camelcase
Run Code Online (Sandbox Code Playgroud)
根据源文件中的评论,它accepts one of :lower_camelcase, :camelcase, :upcase, or :none.
Cim*_*imm 12
我与Savon有类似的问题,最后使用字符串而不是我的哈希键的符号,你可以尝试类似的东西:
soap.body = { 'TokenType'=> 'some_value', 'Token' => 'some_value' }
Run Code Online (Sandbox Code Playgroud)
Savon使用Gyoku来转换我相信的标签.要更改符号转换,您可以插入以下语句:
Gyoku.convert_symbols_to :camelcase # or one of [:none, :lover_camelcase]
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
4039 次 |
| 最近记录: |