用于HTTP POST,GET等的最佳Java库是什么?[已关闭]

2022-08-31 09:37:47

在性能,稳定性,成熟度等方面,用于HTTP POST,GET等的最佳Java库是什么?有没有一个特定的库比其他库使用得更多?

我的要求是将 HTTPS POST 请求提交到远程服务器。我过去使用过 java.net.*软件包以及org.apache.commons.httpclient.*软件包。两者都完成了工作,但我希望您的一些意见/建议。


答案 1

imho: Apache HTTP Client

用法示例:

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;

import java.io.*;

public class HttpClientTutorial {

  private static String url = "http://www.apache.org/";

  public static void main(String[] args) {
    // Create an instance of HttpClient.
    HttpClient client = new HttpClient();

    // Create a method instance.
    GetMethod method = new GetMethod(url);

    // Provide custom retry handler is necessary
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
            new DefaultHttpMethodRetryHandler(3, false));

    try {
      // Execute the method.
      int statusCode = client.executeMethod(method);

      if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: " + method.getStatusLine());
      }

      // Read the response body.
      byte[] responseBody = method.getResponseBody();

      // Deal with the response.
      // Use caution: ensure correct character encoding and is not binary data
      System.out.println(new String(responseBody));

    } catch (HttpException e) {
      System.err.println("Fatal protocol violation: " + e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      System.err.println("Fatal transport error: " + e.getMessage());
      e.printStackTrace();
    } finally {
      // Release the connection.
      method.releaseConnection();
    }  
  }
}

一些突出的功能:

  • 基于标准的纯 Java,HTTP 版本 1.0 和 1.1 的实现
    • 在可扩展的OO框架中完全实现所有HTTP方法(GET,POST,PUT,DELETE,HEAD,OPTIONS和TRACE)。
    • 支持使用 HTTPS(HTTP over SSL)协议进行加密。
    • 精细的非标准配置和跟踪。
    • 通过 HTTP 代理的透明连接。
    • 通过 HTTP 代理,通过 CONNECT 方法隧道 HTTPS 连接。
    • 通过 SOCKS 代理(版本 4 和 5)使用本机 Java 套接字支持实现透明连接。
    • 使用基本、摘要式和加密 NTLM(NT Lan 管理器)方法进行身份验证。
    • 自定义身份验证方法的插件机制。
    • 用于上传大文件的多部分表单POST。
    • 可插拔安全套接字实现,更易于使用第三方解决方案
    • 在多线程应用程序中使用的连接管理支持。支持设置最大总连接数以及每个主机的最大连接数。检测并关闭过时的连接。
    • 自动 Cookie 处理,用于从服务器读取 Set-Cookie:标头,并在适当的时候在 Cookie:标头中将其发送回去。
    • 自定义 Cookie 策略的插件机制。
    • 请求输出流,以避免通过直接流式传输到服务器的套接字来缓冲任何内容正文。
    • 响应输入流,通过直接从套接字流式传输到服务器来有效地读取响应正文。
    • 在 HTTP/1.0 中使用 KeepAlive 的持久连接,在 HTTP/1.1 中使用持久化连接
    • 直接访问服务器发送的响应代码和标头。
    • 设置连接超时的功能。
    • HttpMethods实现了命令模式,以允许并行请求和有效地重用连接。
    • 源代码在Apache软件许可证下免费提供。

答案 2

我会推荐Apache HttpComponents HttpClientCommons HttpClient的继承者

我还建议看看HtmlUnit。HtmlUnit是一个“用于Java程序的无GUI浏览器”。http://htmlunit.sourceforge.net/


推荐