我正在编写一些使用 Apache HttpClient
版本 4.2.2
的 Java 代码来访问 RESTful 第 3 方 API。此 API 具有利用 HTTP GET
、POST
、PUT
和 DELETE
的方法。请务必注意,我使用的是 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/