也许我只是没有为 savon 编写惯用代码,所以请随时纠正我,但我试图在同一个客户端上发出多个请求,如
client=Savon::Client.new {
wsdl.document=wsdl_path
}
r1=client.request(:company_get_report_suites) do
wsse.credentials APP_CONFIG['omniture']['username'],APP_CONFIG['omniture']['shared_secret'],:digest
end
r2=client.request(:scheduling_get_reports_run_history) do
wsse.credentials APP_CONFIG['omniture']['username'],APP_CONFIG['omniture']['shared_secret'],:digest
end
第二个请求最终重用了 nonce。wsse nonce 的要点是只使用一次,所以我调用的服务抱怨我已经重用它并拒绝为请求提供服务。我的第一个想法是添加时间戳,但这并没有帮助;实际上,源代码显示,如果设置了随机数,则使用该随机数,并且仅在先前未设置时才生成。
显然,如果必须,我可以创建一个新客户端,但这是一个相当繁重的操作,似乎不太可能是从同一个客户端创建多个请求的正常方式。
有没有合理的解决方法?