可以肯定的是,您应该从响应的Set-Cookie标头收集Cookie.要在后续请求中发回它们,您应该使用
URLConnection#addRequestProperty()逐个设置它们.
基本上:
// ...
// Grab Set-Cookie headers:
List cookies = connection.getHeaderFields().get("Set-Cookie");
// ...
// Send them back in subsequent requests:
for (String cookie : cookies) {
connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
}
// ...
拆分(“;”,2)是摆脱与服务器端无关的cookie属性,如过期,路径等.
对于一个更方便的HTTP客户端,我建议看看Apache HttpComponents Client.它可以更透明地处理所有的cookie东西.
也可以看看:
更新:根据评论,这不是一个cookie问题.错误的请求令牌意味着服务器内置了CSRF / bot防护(以防止像您这样的人).您需要从表单的请求页面中提取令牌作为隐藏的输入字段,并将其重新发送为请求参数. Jsoup可能有助于提取所有(隐藏)输入字段.不要忘记通过按钮的名称 – 值对,您也可以通过编程方式“按”.另请参阅上述链接了解更多提示.
在将来,你应该更清楚你所检索的确切错误,而不是猜测野外的东西.复制确切的错误信息等等.