代码之家  ›  专栏  ›  技术社区  ›  stellard

Rails Web服务SOAP客户端

  •  0
  • stellard  · 技术社区  · 17 年前

    尝试通过SOAP访问Web服务时出错

    soap_client = SOAP::WSDLDriverFactory.new("http://api.upsidewireless.com/soap/Authentication.asmx?WSDL")
    driver = soap_client.createDriver
    @p = driver.GetParameters(:username => 'uname', :password => 'pword') #ERROR => wrong number of arguments (1 for 2)
    

    我可以清楚地看到这个方法调用的两个参数。为什么我会得到这个错误?

    2 回复  |  直到 17 年前
        1
  •  2
  •   james    17 年前

    不推荐使用wsdldriver(从createdriver调用)。您应该使用'create_rpc_driver'。我从您的示例中得到了使用该方法的响应。有没有理由不使用'create-rpc-driver'?

        2
  •  4
  •   Sarah Mei    17 年前

    @詹姆斯有正确的答案,但只是为了将来参考(因为这已经咬了我),这个电话:

    driver.GetParameters(:username => 'uname', :password => 'pword') 
    

    正在传递一个参数:哈希。每个元素都不是一回事;它是一个带有键和值的哈希元素。Ruby注意到了这一点,并将它们放在一个哈希表中。所以你实际上是通过了:

    driver.GetParameters({:username => 'uname', :password => 'pword'}) 
    

    这是在Ruby中调用方法的一个令人困惑的事情。如果将哈希作为最后一个(或唯一的)参数传递,则可以将 {} 和大多数人一样。有时很难弄清楚。

    如果您真的想把它作为两个参数传递:

    driver.GetParameters('uname', 'pword')