java - 如何给所有HttpClient请求方法添加参数?

标签 java http rest apache-httpclient-4.x

我正在编写一些使用 Apache HttpClient 版本 4.2.2 的 Java 代码来访问 RESTful 第 3 方 API。此 API 具有利用 HTTP GETPOSTPUTDELETE 的方法。请务必注意,我使用的是 4.x.x 版本而不是 3.x.x,因为 API 从 3 到 4 发生了很大变化。我发现的所有相关示例都是针对 3.x.x 版本的。

所有 API 调用都需要您提供 api_key 作为参数(无论您使用哪种方法)。这意味着无论我是进行 GET、POST 还是其他方式,我都需要提供此 api_key 以便调用对服务器端进行身份验证。

// Have to figure out a way to get this into my HttpClient call,
// regardless of whether I'm using: HttpGet, HttpPost, HttpPut
// or HttpDelete...
String api_key = "blah-whatever-my-unique-api-key";

所以我想弄清楚如何为 HttpClient 提供 api_key 而不管我的请求方法(这又取决于我使用的是哪种 RESTful API 方法)试图击中)。看起来 HttpGet 甚至不支持参数的概念,而 HttpPost 使用了一个叫做 HttpParams 的东西;但是这些 HttpParams 似乎只存在于 HttpClient 的 3.x.x 版本中。

所以我问:将我的 api_key 字符串附加/添加到所有四个的正确的 v4.2.2 方法是什么:

  • HttpGet
  • HttpPost
  • HttpPut
  • HttpDelete

提前致谢。

最佳答案

您可以使用 URIBuilder 类为所有 HTTP 方法构建请求 URI。 URI 构建器提供了setParameter 方法来设置参数。

URIBuilder builder = new URIBuilder();
builder.setScheme("http").setHost("www.google.com").setPath("/search")
    .setParameter("q", "httpclient")
    .setParameter("btnG", "Google Search")
    .setParameter("aq", "f")
    .setParameter("oq", "");
URI uri = builder.build();
HttpGet httpget = new HttpGet(uri);
System.out.println(httpget.getURI());

输出应该是

http://www.google.com/search?q=httpclient&btnG=Google+Search&aq=f&oq= 

关于java - 如何给所有HttpClient请求方法添加参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043843/

相关文章:

rest - 如何决定在未定义的 REST 路由上返回 404 或 405 状态

c# - 使服务返回大量数据

java - 在 Jersey 资源组件类中获取 mule 消息属性

java - 使用 Eureka 服务集成测试 Spring Boot 服务

java - 通过 JNI 从 Java 回调 native 应用程序

java - 在kafka中创建多少生产者?

C# - 使用 HttpWebRequest 传递身份验证凭据

c# - 缓存健康检查网络核心

JAVA 剩余两个日期路径参数或查询参数

java - 有没有什么方法可以设计我的 Java 代码,使这两个对象不引用自身?