【问题标题】:Java equivalent of a python GET request? [duplicate]Java相当于python GET请求? [复制]
【发布时间】:2020-04-13 08:11:57
【问题描述】:

我正在尝试在 Java 中执行相同的任务,但似乎无法弄清楚如何特别设置 cookie。

我知道如何在 python 中做到这一点:

response = requests.get(app_url,cookies=cookies,allow_redirects=False)

我如何在 Java 中做同样的事情?

【问题讨论】:

  • 您可以使用 Java 11 及更高版本的 HTTP 客户端 API。

标签: java python http get


【解决方案1】:

我假设您可以可靠地完成请求。如果没有,这可以帮助你。

How to get HTTP response code for a URL in Java?

要处理 cookie,您可能需要查看此内容

How to set Cookies at Http Get method using Java

两种实现都使用基本的 Java HttpURLConnection 类。

【讨论】:

  • 这是 2 个链接,这不是答案。请试着解释一下。
【解决方案2】:

打开一个 URLConnection(HttpURLConnectionHttpsURLConnection,设置 cookie 并连接。

HttpURLConnection con;
InputStream is;
try{
    con=((HttpURLConnection)new URL(app_url).openConnection());
    con.setRequestProperty("Cookie",cookie);
    is=con.openStream();
    //recv code
}finally{
    if(is!=null){try{is.close();}catch(IOException e){}}
    if(con!=null){try{con.close();}catch(IOException e){}
}

【讨论】:

  • 啊,是的,这行得通。此外,对于 Java 中的“allow_redirects=False”,您应该执行以下操作:con.setInstanceFollowRedirects(false);(与 cookie 无关,但因为它包含在参数中)。
  • 我认为默认设置为false。
【解决方案3】:

典型的解决方案是使用 Apache HttpClient。如果您需要设计较少和/或第三方库免费的解决方案,我建议您使用 URLConnection 或新的 Java 11 HttpClient

private final CloseableHttpClient client = HttpClients.createDefault();

...

public String get(String appUrl, String cookie) {
    HttpGet request = new HttpGet(appUrl);
    request.setHeader("Cookie", cookie);

    try (CloseableHttpResponse response = client.execute(request)) {
        HttpEntity entity = response.getEntity();
        return EntityUtils.toString(entity);
    }
}

【讨论】:

    【解决方案4】:

    使用 Java11 的 HttpClient 可能如下所示:

    HttpResponse<String> response = HttpClient.newBuilder()
        .followRedirects(HttpClient.Redirect.NEVER)
        .build()
        .send(
            HttpRequest.newBuilder(URI.create(url))
                .header("cookieName", "cookieValue")
                .GET()
                .build(),
            HttpResponse.BodyHandlers.ofString());
    

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 1970-01-01
      • 2013-03-07
      • 2019-10-18
      • 2020-09-27
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      相关资源
      最近更新 更多