我正在尝试使用SOAP连接到Affilinet。关于此主题的资源不多。我发现最近有人更新了他的文件的代码lib/affilinet.rb。
所以我试图了解它是如何工作的并连接到沙箱数据库
首先我将第27行更改为,因为我只想让开发人员访问:
def initialize(user, password, options = {})
@base_url = 'https://developer-api.affili.net'
我把它放在我的rails目录/lib/affilinet.rb
然后将其设置为config/application.rb
中的自动加载:
config.autoload_paths += %W(#{config.root}/lib)
现在我创建了一个名为:
的函数的测试控制器我尝试使用我的用户名和密码初始化API类。然后我尝试登录,从服务:product
wsdl获取令牌。这应该加载到Savon gem 2.0
客户端,实际上。
def test
client = AffilinetAPI::API.new("myusername","mypassword")
@response = client.product.token
end
我收到错误消息:undefined method new for Savon:Module
这是由lib/affiliate.rb
文件引起的:
def driver
@driver ||= Savon.new(@base_url + @wsdl)
end
我用以下内容替换了该行:
@driver ||= Savon.client(wsdl: @base_url + @wsdl)
现在我终于陷入了困境:
undefined method `services' for #<Savon::Client:0x007f8b950133d0>
def services
driver.services
end
任何人都可以帮我解决这个问题吗?没有好的文件。
更新1:
现在我正在使用Savon 3
。它确实有new
方法,有些功能可以使用。我怎么称呼
protected
区域的方法?我将它们更改为public
。
如何设置操作参数并调用?令牌功能不起作用。
非常感谢你们!
编辑:我设法让它现在运作并了解它是如何工作的。主题可以关闭。
我的错误没有Savon 3
。必须使用operation.body
设置参数!然后
operation.call
执行