Jsoup中是否有一个简单的Cookie管理器,通过主机存储Cookie? this thread中的示例相当缺乏。如何使用Jsoup管理cookie?
2
A
回答
2
Connection.Base
类拥有关于jsoup如何处理cookie的所有知识。
本质上,它会让你获得并设置他们在每个连接,但除此之外,它是由你来“管理”他们。
8
我没有找到适用于Jsoup的标准解决方案。这是我使用HashMap进行简单的cookie处理。它可能缺少了一堆功能,但我希望它会工作不够好,我的基本履带:
private static HashMap<String, HashMap<String, String>> host2cookies = new HashMap<String, HashMap<String, String>>();
public static String[] DownloadPage(URL url) throws Exception
{
Connection con = Jsoup.connect(url.toString()).timeout(600000);
loadCookiesByHost(url, con);
Document doc = con.get();
url = con.request().url();
storeCookiesByHost(url, con);
return new String[]{url.toString(), doc.html()};
}
private static void loadCookiesByHost(URL url, Connection con) {
try {
String host = url.getHost();
if (host2cookies.containsKey(host)) {
HashMap<String, String> cookies = host2cookies.get(host);
for (Entry<String, String> cookie : cookies.entrySet()) {
con.cookie(cookie.getKey(), cookie.getValue());
}
}
} catch (Throwable t) {
// MTMT move to log
System.err.println(t.toString()+":: Error loading cookies to: " + url);
}
}
private static void storeCookiesByHost(URL url, Connection con) {
try {
String host = url.getHost();
HashMap<String, String> cookies = host2cookies.get(host);
if (cookies == null) {
cookies = new HashMap<String, String>();
host2cookies.put(host, cookies);
}
cookies.putAll(con.response().cookies());
} catch (Throwable t) {
// MTMT move to log
System.err.println(t.toString()+":: Error saving cookies from: " + url);
}
}
+0
您可以使用['Connection#cookies(cookies)'](http://jsoup.org/apidocs/org/jsoup/Connection)来代替loadCookiesByHost(..)'中的'cookies'条目。 html#cookies-java.util.Map-),它将地图中的所有cookie添加到连接中。 – Vulcan 2015-12-02 02:49:20
相关问题
- 1. 如何使用jsoup设置jsessionid cookie?
- 2. 如何管理cookie - 使用JavaScript或使用HTTP Set-Cookie?
- 3. 如何使用jsoup整理
- 4. 使用Jsoup登录Cookie?
- 5. Safari如何管理其Cookie?
- 6. 如何使用HttpClient管理cookie时使用嘲弄HttpMessageHandler
- 7. iPhone Cookie管理
- 8. C# - Cookie管理
- 9. PHP Cookie管理
- 10. 使用cookie管理器问题的Jmeter
- 11. 如何使用jsoup
- 12. 如何使用jsoup
- 13. 如何使用jsoup
- 14. 如何使用Jsoup
- 15. Flex:如何在mx:HTML中管理cookie?
- 16. 如何管理浏览器的Cookie
- 17. 如何使用jsoup维护可变的cookie和会话?
- 18. 如何在Android和/或Java中使用HttpClient管理Cookie?
- 19. 如何管理使用JavaScript的多个cookie相同的url
- 20. JMeter Cookie管理器
- 21. JMeter Cookie管理器 - 不存储Cookie?
- 22. JMeter Cookie管理器破坏cookie值
- 23. 如何管理使用TTL
- 24. 如何使用C++代码处理cookie?
- 25. 如何使用js处理cookie
- 26. JSOUP无ID的Cookie ID
- 27. Android ksoap2会话cookie管理
- 28. 在CEF中管理Cookie
- 29. session_id,cookie,会话管理
- 30. 正确的cookie管理
如何阿帕奇[HttpClient的(http://hc.apache.org/)?我一直在使用它。它使用cookies非常好。 – 2012-03-18 14:45:10