老项目 HTTP 请求使用了一些已经过期(废弃)的类或方法,导致IDE提示 'org.apache.http.impl.client.DefaultHttpClient' is deprecated
等。
新代码稍微更新一下,不再使用废弃的类和方法。上一篇《HttpClient 4 简介》已经介绍了相关使用,这里提供完整DEMO。
Gradle 依赖
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.4.1' compile group: 'org.apache.httpcomponents', name: 'httpclient-cache', version: '4.2.5' compile group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.1' compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.2.5' compile group: 'com.alibaba', name: 'fastjson', version: '1.2.1'
示例代码
package Http; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.util.UUID; public class HttpPostTest { public static void main(String[] args) { post(); } private static final String POST_URL = "http://httpbin.org/post"; private static void post() { HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); // 设置超时时间,单位毫秒 RequestConfig requestConfig = RequestConfig.custom() .setConnectionRequestTimeout(1000) .setConnectTimeout(1000) .setSocketTimeout(1000) .build(); try { // 发起POST请求 HttpPost request = new HttpPost(POST_URL); JSONObject requestParams = new JSONObject(); request.addHeader("Content-type", "application/json"); // 请求参数 UUID uuid = UUID.randomUUID(); requestParams.put("uuid", uuid.toString()); StringEntity requestEntity = new StringEntity(requestParams.toJSONString(), "UTF-8"); request.setEntity(requestEntity); request.setConfig(requestConfig); HttpResponse response = closeableHttpClient.execute(request); int statusCode = response.getStatusLine().getStatusCode(); System.out.println("statusCode:"+statusCode); HttpEntity entity = response.getEntity(); String content = EntityUtils.toString(entity); System.out.println("response:"+content); EntityUtils.consume(entity); } catch (IOException e) { System.out.println("IOException"+e); } catch (Exception e) { System.out.println("exceprion"+e); } finally { try { //关闭流并释放资源 closeableHttpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } }