使用用户名和密码发送POST请求并保存会话cookie

Jev*_*nov 9 java cookies session login jsoup

在使用用户名和密码发送POST请求后,如何使用Jsoup保存cookie?或者我必须首先将它们提供给连接对象然后保存?

Bal*_*usC 14

假设HTML表单如下所示:

<form action="http://example.com/login" method="post">
    <input type="text" name="username" />
    <input type="password" name="password" />
    <input type="submit" name="login" value="Login" />
</form>
Run Code Online (Sandbox Code Playgroud)

你可以发布它并获得如下cookie:

Response response = Jsoup.connect("http://example.com/login")
    .method(Method.POST)
    .data("username", username)
    .data("password", password)
    .data("login", "Login")
    .execute();
Map<String, String> cookies = response.cookies();
Document document = response.parse(); // If necessary.
// ...
Run Code Online (Sandbox Code Playgroud)

您可以在后续请求中传回cookie,如下所示:

Document document = Jsoup.connect("http://example.com/user")
    .cookies(cookies)
    .get();
// ...
Run Code Online (Sandbox Code Playgroud)

或者,如果您知道单个cookie名称:

Document document = Jsoup.connect("http://example.com/user")
    .cookie("SESSIONID", cookies.get("SESSIONID"))
    .get();
// ...
Run Code Online (Sandbox Code Playgroud)

  • 关于.cookies(地图)建议的好点.那里有一个.data().我希望尽快添加它. (3认同)
  • 好的,我有那个方法; 如果您从头部开始构建,或者很快就会在1.6.2中构建.https://github.com/jhy/jsoup/commit/93ff111c590ea57b311705360111a3e54329a026 (3认同)