"})但是savon转义字符串并发送<elem/>如何在不转义的情况下发送原始xml?">
我试着用Savon发送请求到一个webservice。我正在使用的服务需要嵌套的命名空间,而且我还没有弄清楚如何在请求时提供它们。
我尝试手工完成请求(实际上是使用nokogiri )并发送结果xml:
client.call(:some_op, :message=>{:"op"=>"<elem/>"})
但是savon转义字符串并发送<elem/>
如何在不转义的情况下发送原始xml?
发布于 2014-02-20 08:45:22
电话应该是这样的:
client.call(:some_op, xml: "<elem />")
或者,如果您只想设置一个或多个名称空间,那么按照以下方式创建一个客户机(没有WSDL):
client = Savon.client(
:endpoint => 'http://www.example.com',
:namespace => 'urn:core.example.com',
:namespaces => { 'ns1' => 'http://v1.example.com',
'ns2' => 'http://v2.example.com' },
:log => true,
:log_level => :debug,
:pretty_print_xml => true
)
命名空间是一个Hash
参数。
发布于 2019-04-02 09:23:19
似乎Savon内部使用Gyoku Gem将ruby散列转换为XML,而Gyoku不会根据文档:https://github.com/savonrb/gyoku#special-characters转义以感叹号结尾的散列键。
因此,这段代码可以在仍然使用Savon生成信封XML的同时将原始xml导入请求:
client.call(:some_op, :message=>{:"op!"=>"<elem/>"})
https://stackoverflow.com/questions/21913449
复制