Ruby SAVON gem在发出请求时出错
我试图发出一个非常直接的Ruby SAVON gem在发出请求时出错,ruby,soap,savon,Ruby,Soap,Savon,我试图发出一个非常直接的SOAP请求,一个在SoapUI中工作的请求,但是当我执行Ruby代码时,我得到了一个“raise\u SOAP\u和\u http\u错误!”执行请求时发生异常 下面是代码-在wsdl\u path中引用的文档在SOAPUI中进行身份验证请求 require 'savon' wsdl_path = 'XXXX_soap_interface.wsdl' client = Savon.client( :wsdl => wsdl_path, :ssl_veri
SOAP
请求,一个在SoapUI
中工作的请求,但是当我执行Ruby代码时,我得到了一个“raise\u SOAP\u和\u http\u错误!”执行请求时发生异常
下面是代码-在wsdl\u path中引用的文档在SOAPUI中进行身份验证请求
require 'savon'
wsdl_path = 'XXXX_soap_interface.wsdl'
client = Savon.client(
:wsdl => wsdl_path,
:ssl_verify_mode => :none,
:raise_errors => true, # false if you don't want to see exceptions
pretty_print_xml: true)
response = client.call(
:authenticate,
message: {:partnerName => 'XXXX', :userName => 'xxxxxx', :password => 'xxxxx'}
)
puts response
我得到的错误是:
savon/response.rb:85:in `raise_soap_and_http_errors!': (SOAP-
ENV:Server) Exception executing request (Savon::SOAPFault)
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/response.rb:14:in `initialize'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/operation.rb:64:in `new'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/operation.rb:64:in `create_response'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/operation.rb:55:in `call'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/client.rb:36:in `call'
from xxx_soap.rb:15:in `<main>'
savon/response.rb:85:in'raise\u soap\u和\u http\u errors!':(肥皂-
环境:服务器)执行请求时出现异常(Savon::SOAPFault)
来自C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/response.rb:14:in'initialize'
来自C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/operation.rb:64:in'new'
来自C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/operation.rb:64:in'create\u response'
来自C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/operation.rb:55:in'call'
来自C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/savon-2.4.0/lib/savon/client.rb:36:in'call'
来自xxx_soap.rb:15:in`'
我正在运行Ruby 1.9,有人知道是什么让它工作吗
编辑:wsdl_path变量在用于创建Savon客户机时起作用。我能够创建客户机并执行client.operations,并成功地从SOAP服务返回操作。只有请求失败了
编辑:在从下面添加了有用的日志代码后,我得到了以下信息:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:common="urn:xxx-com:cloud:common"
xmlns:finsvc="urn:xxx-com:cloud:finsvc"
xmlns:finsvc-13-6-0="urn:xxx-com:cloud:finsvc:13.6.0">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Exception executing request</faultstring>
<detail>
<operationResult>
<errorCode>101</errorCode>
<errorMessage>SOAP error 44 (SOAP 1.1 fault: SOAP-ENV:Client [no subcode] "Validation constraint violation: occurrence v
iolation in element 'userName'" Detail: [no detail] )</errorMessage>
</operationResult>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP-ENV:服务器
执行请求时出现异常
101
SOAP错误44(SOAP 1.1错误:SOAP-ENV:Client[无子代码]“验证约束冲突:发生v
元素“userName”中的iolation详细信息:[无详细信息])
无论我将参数按什么顺序放置,或者是否使用camelcase,消息中指定的第一个参数都会抛出上述错误。
wsdl\u path
应该是完整的URL,如http://domain.name/.../soap.wsdl
wsdl\u路径
应该是完整的URL,像http://domain.name/.../soap.wsdl
wsdl\u路径
应该是完整的URL,如http://domain.name/.../soap.wsdl
wsdl\u路径
应该是完整的URL,如http://domain.name/.../soap.wsdl
使用打开日志记录
client = Savon.client(
...
log: true,
loglevel: :debug,
pretty_print_xml: true)
如果找不到问题,就分享输出
如果问题仍然存在,则应采用标准方法:
client = Savon.client(
...
log: true,
loglevel: :debug,
pretty_print_xml: true)
如果找不到问题,就分享输出
如果问题仍然存在,则应采用标准方法:
client = Savon.client(
...
log: true,
loglevel: :debug,
pretty_print_xml: true)
如果找不到问题,就分享输出
如果问题仍然存在,则应采用标准方法:
client = Savon.client(
...
log: true,
loglevel: :debug,
pretty_print_xml: true)
如果找不到问题,就分享输出
如果问题仍然存在,则应采用标准方法:
因此,所有这些都是wsdl文档中的问题,其中所需的字段没有这样声明,但服务的响应没有揭示这一点。因此,所有这些都是wsdl文档中的问题,其中所需的字段没有这样声明,但是来自服务的响应没有揭示这一点。因此,所有这些都是wsdl文档中的问题,其中需要的字段没有这样声明,但是来自服务的响应没有揭示这一点。因此,所有这些都是wsdl文档中需要的字段没有这样声明的问题,但是服务部门的回复没有透露这一点。我很确定你在这里的陈述是不准确的。wsdl_路径也可以指向本地文件,这就是它在这里所做的。正如我所说,该变量引用的wsdl文件在SOAP UI中工作,使用wsdl变量的客户端连接工作到,因此,例如,我可以创建客户端,然后使用client.operations并从SOAP服务返回操作列表。是的,你是对的。您得到的错误是SOAPFault,而不是HTTP错误。我很确定您在这里的陈述不准确。wsdl_路径也可以指向本地文件,这就是它在这里所做的。正如我所说,该变量引用的wsdl文件在SOAP UI中工作,使用wsdl变量的客户端连接工作到,因此,例如,我可以创建客户端,然后使用client.operations并从SOAP服务返回操作列表。是的,你是对的。您得到的错误是SOAPFault,而不是HTTP错误。我很确定您在这里的陈述不准确。wsdl_路径也可以指向本地文件,这就是它在这里所做的。正如我所说,该变量引用的wsdl文件在SOAP UI中工作,而客户端连接在SOAP UI中工作