Java 如何在https连接上检索Cookie?

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

我正在尝试将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 (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()