我有一个创建Microsoft.XMLHTTP对象的Lotusscript代理 自上次询问以来,该对象访问servlet并接收事务。
这是做了什么:
Set objHttp = CreateObject("Microsoft.XMLHTTP")
objHttp.open "POST", theUrl, False, "", ""
objHttp.setRequestHeader "Content-type", specific_for_customer
objHttp.send(theReq)
headers = objHttp.getAllResponseHeaders()
response = objHttp.responseText
'...do the stuff...
Set objHttp=Nothing
当你保持会话开放并提出问题时,它非常有效。 但是,如果在我的情况下,我的目的是每5分钟运行一次这个代理,我就会遇到问题。
我按预期关闭了对象。 当我再次启动代理时,servlet不接受我的访问权限,因为我在请求中有一个会话cookie(并且它不被接受)。
在我的世界中,当我做Set objHttp = Nothing时,应该清除5分钟前同意的servlet和我的代码。 我也找不到饼干。 我想这是以某种特殊/奇怪的方式,Domino代理管理器保留cookie(但在哪里),并在我再次连接时尝试使用它。
在与servlet进行会话时,我可以找到cookie的值,但是下次代理运行时我无法连接。
再次建立会话的唯一方法是重新启动代理管理器。
我已经尝试过几个查找并删除cookie的内容(无法找到它)。
在我解决这个问题的方法中,我甚至复制了代理,然后运行了该代理,并且我无法访问servlet,所以代理管理器在这里是可疑的......
也许有人有类似的问题。
所以..
希望以某种方式提供一些帮助
答案 0 :(得分:2)
设置objHTTP =不仅仅取消引用对象。它不会卸载提供该对象或其加载的其他DLL的DLL(在这种情况下,它是Microsoft基于IE的堆栈的一大块)。它不会清除这些DLL分配给该对象的内存。由于AMGR是加载这些DLL的进程,并且AMGR仍在运行,它与启动浏览器,连接到该站点,打开一堆其他浏览器选项卡,用会话cookie关闭选项卡几乎相同等了5分钟,然后打开一个新标签然后回到那个站点。饼干还在那里。
设置objHTTP = no就像关闭标签一样。微软认为这样做可以帮到你。就像使用浏览器一样,处理此问题的最佳方法是退出网站。如果站点提供了注销URL,请在设置objHTTP = nothing之前连接到该URL。这应该让服务器为你的cookie无效。
答案 1 :(得分:0)
您可以转到HTTP Communication的Java。链接中的示例具有可重用的代码,并将其很好地包装到LS2J中。另外:它将在所有平台上运行