Java 如何在https连接上检索Cookie?
我正在尝试将cookie保存在使用SSL但始终返回NULL的URL中Java 如何在https连接上检索Cookie?,java,cookies,https,jsoup,Java,Cookies,Https,Jsoup,我正在尝试将cookie保存在使用SSL但始终返回NULL的URL中 private Map<String, String> cookies = new HashMap<String, String>(); private Document get(String url) throws IOException { Connection connection = Jsoup.connect(url); for (En
private Map<String, String> cookies = new HashMap<String, String>();
private Document get(String url) throws IOException {
Connection connection = Jsoup.connect(url);
for (Entry<String, String> cookie : cookies.entrySet()) {
connection.cookie(cookie.getKey(), cookie.getValue());
}
Response response = connection.execute();
cookies.putAll(response.cookies());
return response.parse();
}
private void buscaJuizado(List<Movimentacao> movimentacoes) {
try {
Connection.Response res = Jsoup .connect("https://projudi.tjpi.jus.br/projudi/publico/buscas/ProcessosParte?publico=true")
.userAgent("Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2")
.timeout(0)
.response();
cookies = res.cookies();
Document doc = get("https://projudi.tjpi.jus.br/projudi/listagens/DadosProcesso? numeroProcesso=" + campo);
System.out.println(doc.body());
} catch (IOException ex) {
Logger.getLogger(ConsultaProcessoTJPi.class.getName()).log(Level.SEVERE, null, ex);
}
}
private-Map cookies=new-HashMap();
私有文档get(字符串url)抛出IOException{
Connection=Jsoup.connect(url);
对于(条目cookie:cookies.entrySet()){
cookie(cookie.getKey(),cookie.getValue());
}
Response=connection.execute();
cookies.putAll(response.cookies());
返回response.parse();
}
私有void buscaJuizado(列出电影){
试一试{
Connection.Response res=Jsoup.connect(“https://projudi.tjpi.jus.br/projudi/publico/buscas/ProcessosParte?publico=true")
.userAgent(“Mozilla/5.0(Windows NT 6.1;rv:15.0)Gecko/20120716 Firefox/15.0a2”)
.超时(0)
.response();
cookies=res.cookies();
文档文档=获取(“https://projudi.tjpi.jus.br/projudi/listagens/DadosProcesso? numeroProcesso=“+campo”);
System.out.println(doc.body());
}捕获(IOEX异常){
Logger.getLogger(ConsultaProcessoTJPi.class.getName()).log(Level.SEVERE,null,ex);
}
}
我尝试在第一次连接时捕获cookies,但它们总是设置为NULL。我想可能是因为安全连接(HTTPS)的缘故
有什么想法吗?问题不是HTTPS。这个问题或多或少是个小错误 要解决问题,只需将
.response()
替换为.execute()
。这样,
private void buscaJuizado(List<Movimentacao> movimentacoes) {
try {
Connection.Response res = Jsoup
.connect("https://projudi.tjpi.jus.br/projudi/publico/buscas/ProcessosParte?publico=true")
.userAgent("Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2")
.timeout(0)
.execute(); // changed fron response()
cookies = res.cookies();
Document doc = get("https://projudi.tjpi.jus.br/projudi/listagens/DadosProcesso?numeroProcesso="+campo);
System.out.println(doc.body());
} catch (IOException ex) {
Logger.getLogger(ConsultaProcessoTJPi.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void buscaJuizado(列出动作){
试一试{
Connection.Response res=Jsoup
.连接(“https://projudi.tjpi.jus.br/projudi/publico/buscas/ProcessosParte?publico=true")
.userAgent(“Mozilla/5.0(Windows NT 6.1;rv:15.0)Gecko/20120716 Firefox/15.0a2”)
.超时(0)
.execute();//对响应()进行了更改
cookies=res.cookies();
文档文档=获取(“https://projudi.tjpi.jus.br/projudi/listagens/DadosProcesso?numeroProcesso=“+坎波);
System.out.println(doc.body());
}捕获(IOEX异常){
Logger.getLogger(ConsultaProcessoTJPi.class.getName()).log(Level.SEVERE,null,ex);
}
}
总的来说,您必须确保首先执行请求。
调用
.response()
有助于在执行请求后获取连接.response
对象。显然,如果您没有执行请求,Connection.Response
对象将不会非常有用
事实上,如果您尝试对未执行的响应调用res.body()
,您将收到以下异常,指示问题
java.lang.IllegalArgumentException:在获取响应正文之前,必须执行请求(使用.execute()、.get()或.post()