这似乎是一个非常简单的问题,但在这里和网络上进行了几个小时的研究后,我开始认为我可能问错了问题或做错了什么。
无论如何,我有一个用于登录的 Web 服务,一旦成功,就会返回一个标头 cookie,随后使用此 cookie 对其他服务的调用将被视为经过身份验证。这可能不是最安全或最佳的做法,但这是我拥有的服务
在 Java 中,我只是从成功登录的响应中获取 cookie 并传递给其他调用
例如(我知道,有些调用已被弃用,Axis 1 完全被弃用,但请发挥你的想象力)
// get the cookie
Call authCall = service1Locator.getCall();
org.apache.axis.MessageContext msgContext = authCall.getMessageContext();
String cookie = msgContext.getStrProp(HTTPConstants.HEADER_COOKIE);
// Standard binding
Service2Locator service2Locator=new Service2Locator();
Service2SoapBindingStub service2=(Service2SoapBindingStub)service2Locator.getSomeService();
service2Locator.setMaintainSession(true);
// And now - SET THE COOKIE
service2._setProperty(HTTPConstants.HEADER_COOKIE,cookie);
(来自这里的原始示例)
至于它可能是旧的、不正确的或不安全的(是吗?),我仍然想在 .NET 中做同样的事情
我看到了关于 CookieContainer 的评论,但我的服务(由 VS Express 2010 自动生成)没有这样的属性......
从一个服务调用获取 cookie 并传递给另一个服务调用的等效方法是什么(以模拟浏览器自动执行的某些会话持久性)
(如果可能,我仍然想使用简单的“添加服务引用”自动生成的 Web .NET 服务客户端)