Clo*_*bot 2 java cookies post login urlconnection
我在登录Java中的任何站点时遇到了一些麻烦.我正在使用默认的URL连接POST请求,但我不确定如何正确处理cookie.我试过这个指南:http://www.hccp.org/java-net-cookie-how-to.html但是无法让它运转起来.我基本上已经尝试了几天了,如果有人想帮助我,我真的需要帮助.
我可能会被告知它很乱,我应该使用一个自定义库来实现这个目的.我尝试下载一个,但不知道如何设置和工作.我现在已经尝试了几个小时的各种事情,它只是不起作用.我宁愿用标准的URL连接来做这件事,但是如果有人能帮助我让另一个图书馆工作,那就更好了,那也很棒.
如果有人可以发布我可以学习的工作来源,我将非常感激.我需要的是:将登录数据POST到站点 - >从站点获取并存储cookie - >使用带有下一个URL连接请求的cookie来获取站点的登录版本.
谁能帮我这个?非常感谢.这确实意味着很多.如果有人想帮我实时帮助,请留下即时通讯地址.非常感谢你的时间.
这段代码适合我:
获取登录表单(在我的情况下,当我检索登录页面时实际设置了cookie)
URL url = new URL(formPage);
URLConnection conn = url.openConnection();
String cookieHeader = conn.getHeaderFields().get("Set-Cookie").get(0);
Matcher m = JSESSION_PATTERN.matcher(cookieHeader);
m.find();
jSessionId = m.group(1);
Run Code Online (Sandbox Code Playgroud)
我也需要获取一个csrf值,但我现在会省略它.
我然后登录:
URL url = new URL(formPage);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Cookie", "JSESSIONID=" + encode(jSessionId, "UTF-8"));
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes(String.format("_csrf_token=%s&xyz=%s&zyx=%s",
encode(csrfToken, "UTF-8"),
encode(USER, "UTF-8"),
encode(PASS, "UTF-8")));
out.close();
// I have absolutely no idea why this is needed.
conn.getInputStream().close();
String cookieHeader = conn.getHeaderFields().get("Set-Cookie").get(0);
Matcher m = JSESSION_PATTERN.matcher(cookieHeader);
m.find();
jSessionId = m.group(1);
Run Code Online (Sandbox Code Playgroud)
然后我可以使用检索和处理页面
URL url = new URL(thePage);
URLConnection conn = url.openConnection();
conn.setRequestProperty("Cookie", "JSESSIONID=" + encode(jSessionId, "UTF-8"));
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String str;
while ((str = in.readLine()) != null) {
// process str...
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
6817 次 |
| 最近记录: |