Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby SAVON gem在发出请求时出错_Ruby_Soap_Savon - Fatal编程技术网

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)
如果找不到问题,就分享输出

如果问题仍然存在,则应采用标准方法:

  • 获取SoapUI
  • 创建可以成功执行的有效调用
  • 基于此-编写一个Ruby脚本(不是RubyonRails!!)来创建一个有效的请求
  • 将该代码集成到Rails(或任何项目)中
  • 使用打开日志记录

    client = Savon.client(
    ...
    log: true,
    loglevel: :debug,
    pretty_print_xml: true)
    
    如果找不到问题,就分享输出

    如果问题仍然存在,则应采用标准方法:

  • 获取SoapUI
  • 创建可以成功执行的有效调用
  • 基于此-编写一个Ruby脚本(不是RubyonRails!!)来创建一个有效的请求
  • 将该代码集成到Rails(或任何项目)中
  • 使用打开日志记录

    client = Savon.client(
    ...
    log: true,
    loglevel: :debug,
    pretty_print_xml: true)
    
    如果找不到问题,就分享输出

    如果问题仍然存在,则应采用标准方法:

  • 获取SoapUI
  • 创建可以成功执行的有效调用
  • 基于此-编写一个Ruby脚本(不是RubyonRails!!)来创建一个有效的请求
  • 将该代码集成到Rails(或任何项目)中
  • 使用打开日志记录

    client = Savon.client(
    ...
    log: true,
    loglevel: :debug,
    pretty_print_xml: true)
    
    如果找不到问题,就分享输出

    如果问题仍然存在,则应采用标准方法:

  • 获取SoapUI
  • 创建可以成功执行的有效调用
  • 基于此-编写一个Ruby脚本(不是RubyonRails!!)来创建一个有效的请求
  • 将该代码集成到Rails(或任何项目)中

  • 因此,所有这些都是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中工作