HttpClient 4.x:如何在多个请求中保留cookie?

时间:2014-07-22 19:54:19

标签: authentication cookies apache-httpclient-4.x

我需要使用Apache HttpClient(4.x)进行3次连续的网络通话,并基本上以编程方式登录我的应用程序:

  1. HTTP GET到登录页面(http://myapp01.example.com
  2. 服务器将使用响应Cookie“JSESSIONID
  3. 响应此GET
  4. 对同一页面的HTTP POST(使用与请求cookie相同的JSESSIONID
  5. 服务器现在验证我并验证JSESSIONID
  6. HTTP GET到同一个域(http://myapp01.example.com/fizz)下的其他页面,再次使用相同的JSESSIONID作为请求Cookie
  7. 第一个GET的回复将包含一个名为JSESSIONID的cookie。然后,POST将登录到服务器(在POST请求正文中发送用户名和密码数据)。此POST还将发送(Set-Cookie)从第一个GET收到的JSESSIONID cookie。如果我的登录成功,JSESSIONID现在将被验证,我已登录。然后,我可以进行第二次GET调用(仍使用相同的JSESSIONID)到/fizz通常是经过身份验证的网址。

    可以在HttpClient 4中完成吗?我看到有一种方法HttpClient.getCookieStore()。但这似乎只存储每个GET / POST / PUT等的cookie。

    有关如何在多个请求中保存Cookie的任何想法,以便服务器返回的任何Cookie随后会添加到后续请求中吗?

1 个答案:

答案 0 :(得分:3)

Apache HttpClient会自动处理(从版本2开始)