java jsoup获取cookie_java – 如何使用jsoup维护变量cookie和会话?

这段代码非常令人困惑.流程不合逻辑,异常处理很糟糕.像if(p!= path)和if(cookys!= cookies)之类的对象引用比较没有任何意义.要比较对象的内容,您需要使用equals()方法.

到目前为止,我知道您希望在同一个域上的一堆后续Jsoup请求中维护cookie.在这种情况下,您需要基本遵循以下流程:

Map cookies = new HashMap();

// First request.

Connection connection1 = Jsoup.connect(url1);

for (Entry cookie : cookies.entrySet()) {

connection1.cookie(cookie.getKey(), cookie.getValue());

}

Response response1 = connection1.execute();

cookies.putAll(response1.cookies());

Document document1 = response1.parse();

// ...

// Second request.

Connection connection2 = Jsoup.connect(url2);

for (Entry cookie : cookies.entrySet()) {

connection2.cookie(cookie.getKey(), cookie.getValue());

}

Response response2 = connection2.execute();

cookies.putAll(response2.cookies());

Document document2 = response2.parse();

// ...

// Third request.

Connection connection3 = Jsoup.connect(url3);

for (Entry cookie : cookies.entrySet()) {

connection3.cookie(cookie.getKey(), cookie.getValue());

}

Response response3 = connection3.execute();

cookies.putAll(response3.cookies());

Document document3 = response3.parse();

// ...

// Etc.

这可以重构为以下方法:

private Map cookies = new HashMap();

public Document get(url) throws IOException {

Connection connection = Jsoup.connect(url);

for (Entry cookie : cookies.entrySet()) {

connection.cookie(cookie.getKey(), cookie.getValue());

}

Response response = connection.execute();

cookies.putAll(response.cookies());

return response.parse();

}

可以用作

YourJsoupWrapper jsoupWrapper = new YourJsoupWrapper();

Document document1 = jsoupWrapper.get(url1);

// ...

Document document2 = jsoupWrapper.get(url2);

// ...

Document document3 = jsoupWrapper.get(url3);

// ...

请注意,即将推出的Jsoup 1.6.2将附带一个新的Connection#cookies(Map)方法,该方法应该使循环每次都是多余的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值