当前位置: 首页 > 面试题库 >

什么是用于HTTP POST,GET等的最佳Java库?

文自怡
2023-03-14
问题内容

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

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


问题答案:

imho:Apache HTTP客户端

用法示例:

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(基于SSL的HTTP)协议进行加密。
    • 粒度非标准配置和跟踪。
    • 通过HTTP代理的透明连接。
    • 通过CONNECT方法通过HTTP代理建立的隧道HTTPS连接。
    • 使用本机Java套接字支持通过SOCKS代理(版本4和5)进行透明连接。
    • 使用基本,摘要和加密NTLM(NT Lan Manager)方法进行身份验证。
    • 自定义身份验证方法的插件机制。
    • 多部分表单POST,用于上传大文件。
    • 可插拔安全套接字实施,使使用第三方解决方案更加容易
    • 连接管理支持在多线程应用程序中使用。支持设置最大总连接数以及每个主机的最大连接数。检测并关闭陈旧的连接。
    • 自动Cookie处理,用于从服务器读取Set-Cookie:标头,并在适当时在Cookie:标头中发回。
    • 自定义Cookie策略的插件机制。
    • 请求输出流以避免通过直接流到服务器的套接字来缓冲任何内容主体。
    • 响应输入流通过直接从套接字流传输到服务器来有效读取响应主体。
    • 在HTTP / 1.0中使用KeepAlive的持久连接以及在HTTP / 1.1中的持久性
    • 直接访问服务器发送的响应代码和标头。
    • 设置连接超时的能力。
    • HttpMethods实现了命令模式,以允许并行请求和有效的连接重用。
    • 源代码可根据Apache软件许可免费获得。


 类似资料:
  • 问题内容: 在Java中创建模拟对象的最佳框架是什么?为什么?每个框架的优缺点是什么? 问题答案: 我使用Mockito取得了成功。 当我尝试学习JMock和EasyMock时,我发现学习曲线有些陡峭(尽管也许就是我自己)。 我喜欢Mockito,因为它的语法简洁明了,我很快就能掌握。最小的语法旨在很好地支持常见情况,尽管几次我需要做一些更复杂的事情,但我发现我想要的东西是受支持的并且易于理解。

  • 问题内容: 根据您的经验,您可以推荐一些东西吗?我使用了izpack,它是一个非常不错的工具,还有其他更好的工具吗? 问题答案: 在MS Windows中,NSIS很棒,它是免费的,并且OSS 参考:具有自动JRE安装的Java启动器

  • 本文向大家介绍除了Eclipse,Java的最佳IDE是什么?,包括了除了Eclipse,Java的最佳IDE是什么?的使用技巧和注意事项,需要的朋友参考一下 IntelliJ和NetBeans是Java开发的替代IDE。

  • 我有一个密集更新的列表,所以我将它们分组在一起,并在单个线程中作为批处理作业执行它们。其他线程可以随时发送更新。 当调度要排队更新的作业时,我想要一个集合,如果作业已经存在,我可以在其中修改作业(假设itemId为键)。在这个例子中: 因此,队列不会开始为同一项提供数千个作业。当作业开始执行时,我需要以某种方式在队列中循环,但是在更新作业时,它不应该被更新(每个项目都应该有自己的锁吗?)。 更新作

  • 问题内容: 我是一名PHP开发人员,现在我使用Notepad++进行代码编辑,但是最近我一直在寻找IDE以简化工作。 我研究了Eclipse,Aptana Studio和其他几个工具,但我不确定,它们看上去都不错,但是有点复杂。我相信一旦习惯了,一切都会变得容易,但是我不想浪费时间。 这就是我要寻找的: FTP支持 代码突出显示 SVN支持会很棒 Ruby和JavaScript会很棒 问题答案:

  • 问题内容: 我有一个用Java编写的Web应用程序(Spring,Hibernate / JPA,Struts2),用户可以在其中上传图像并将其存储在文件系统中。我想缩放这些图像,以使它们具有一致的大小,以便在网站上显示。哪些库或内置函数将提供最佳结果?在做出决定时,我将考虑以下标准: 免费/开源(基本) 易于实施 结果质量 性能 可执行文件的大小 问题答案: 看一下Java Image I /