Java调用HTTP REST接口示例代码

4星 · 超过85%的资源 需积分: 50 919 下载量 31 浏览量 更新于2024-09-13 4 收藏 28KB TXT 举报
"Java调用Http Rest接口的例子说明" 在Java编程中,调用HTTP REST接口是常见的任务,尤其是当你需要与远程服务进行交互时。REST(Representational State Transfer,表述性状态转移)是一种架构风格,常用于构建Web服务。本教程将通过一个简单的示例介绍如何使用Apache HttpClient库在Java中实现HTTP的POST和GET方法。 首先,POST方法常用于向服务器发送数据,而GET方法则用于获取资源。Apache HttpClient是一个强大的库,它提供了对HTTP协议的全面支持,包括错误处理、重试策略等。 以下是使用Apache HttpClient库实现POST方法的示例代码片段: ```java import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpMethodParams; public class HttpConnectUtil { // ... / * POST方式 * @param url 目标URL * @param params 参数,以&分隔的键值对(如:key1=value1&key2=value2) * @return 服务器响应的字符串 */ public static String postHttp(String url, String params) { HttpClient httpClient = new HttpClient(); PostMethod postMethod = new PostMethod(url); // 设置请求参数 postMethod.setRequestBody(params); // 配置重试处理,如果请求失败,会按照重试次数进行重试 postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); try { // 执行POST请求 int statusCode = httpClient.executeMethod(postMethod); if (statusCode != 200) { throw new RuntimeException("Failed : HTTP error code : " + statusCode); } // 获取响应体 byte[] responseBody = postMethod.getResponseBody(); return new String(responseBody); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 释放连接资源 postMethod.releaseConnection(); } return null; } // ... } ``` 对于GET方法,它是用来从服务器获取资源的,代码相对简单: ```java import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpMethodParams; // ... / * GET方式 * @param url 请求的URL * @return 服务器响应的字符串 */ public static String getHttp(String url) { HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod(url); // 配置重试处理 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); try { // 执行GET请求 int statusCode = httpClient.executeMethod(getMethod); if (statusCode != 200) { throw new RuntimeException("Failed : HTTP error code : " + statusCode); } // 获取响应体 byte[] responseBody = getMethod.getResponseBody(); return new String(responseBody); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 释放连接资源 getMethod.releaseConnection(); } return null; } // ... ``` 在上述代码中,`HttpClient`对象创建了HTTP连接,`GetMethod`和`PostMethod`分别代表GET和POST请求。`setRequestBody`方法用于设置POST请求的数据,而GET请求通常在URL中直接携带参数。`executeMethod`执行请求,并通过`getStatusCode`检查返回的状态码,以确认请求是否成功。如果成功,可以通过`getResponseBody`获取服务器的响应,并转换为字符串。 注意,处理HTTP请求时,需要捕获并处理可能出现的异常,如`HttpException`和`IOException`。最后,别忘了在请求完成后释放连接资源,以避免资源泄露。 这个示例适用于基本的HTTP REST接口调用,但在实际项目中,可能需要处理更复杂的情况,如添加请求头、处理JSON数据、使用HTTPS、设置超时时间等。Apache HttpClient库提供了丰富的API来应对这些需求,可以灵活地扩展和定制。