也许我只是没有为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的意思是只使用它一次,所以我正在调用的服务抱怨我已经重用它并拒绝为请求提供服务。我的第一个想法是添加时间戳,但这没有帮助;事实上,源代码显示如果设置则使用随机数,并且仅在先前未设置时生成。
显然,如果必须,我可以创建一个新客户端,但这是一个相当重量级的操作,似乎不太可能是从同一个客户端创建多个请求的正常方式。
有合理的解决方法吗?
答案 0 :(得分:0)
这让我觉得很脏,但是如果没有人能提出更好的选择,那就可以了:
class Savon::WSSE
def reset_nonce
@nonce=nil
@nonce=nonce
end
end
r1=client.request(:company_get_report_suites) do
wsse.reset_nonce
end