基於\httpcomponents-client-4.5.5須要引入相關jar包以下:java
必須導入commons-logging-1.2.jar,不然會提示web
json api接口地址:apache
https://www.bejson.com/knownjson/webInterface/json
本例用了百度上的那個接口windows
測試代碼:api
1 import org.apache.http.HttpStatus; 2 import org.apache.http.client.config.RequestConfig; 3 import org.apache.http.client.methods.CloseableHttpResponse; 4 import org.apache.http.client.methods.HttpGet; 5 import org.apache.http.client.methods.HttpPost; 6 import org.apache.http.entity.StringEntity; 7 import org.apache.http.impl.client.CloseableHttpClient; 8 import org.apache.http.impl.client.HttpClients; 9 import org.apache.http.util.EntityUtils; 10 11 import com.sun.java.swing.plaf.windows.resources.windows; 12 13 14 public class HttpServletUtil { 15 16 String result = null; 17 CloseableHttpClient httpclient = HttpClients.createDefault(); 18 RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build(); 19 20 public String doPost(String params, String url) throws Exception { 21 22 HttpPost httpPost = new HttpPost(url); 23 StringEntity entity = new StringEntity(params.toString(), "utf-8"); 24 httpPost.setEntity(entity); 25 //設置請求和傳輸超時時間 26 httpPost.setConfig(requestConfig); 27 CloseableHttpResponse httpResp = httpclient.execute(httpPost); 28 try { 29 int statusCode = httpResp.getStatusLine().getStatusCode(); 30 // 判斷是夠請求成功 31 if (statusCode == HttpStatus.SC_OK) { 32 System.out.println("狀態碼:" + statusCode); 33 System.out.println("請求成功!"); 34 // 獲取返回的數據 35 result = EntityUtils.toString(httpResp.getEntity(), "UTF-8"); 36 } else { 37 System.out.println("狀態碼:" 38 + httpResp.getStatusLine().getStatusCode()); 39 System.out.println("HttpPost方式請求失敗!"); 40 } 41 } finally { 42 httpResp.close(); 43 httpclient.close(); 44 } 45 return result; 46 } 47 48 public String doGet(String url) throws Exception{ 49 String result = null; 50 CloseableHttpClient httpclient = HttpClients.createDefault(); 51 httpclient = HttpClients.createDefault(); 52 HttpGet httpGet = new HttpGet(url); 53 //設置請求和傳輸超時時間 54 httpGet.setConfig(requestConfig); 55 CloseableHttpResponse httpResp = httpclient.execute(httpGet); 56 try { 57 int statusCode = httpResp.getStatusLine().getStatusCode(); 58 // 判斷是夠請求成功 59 if (statusCode == HttpStatus.SC_OK) { 60 System.out.println("狀態碼:" + statusCode); 61 System.out.println("請求成功!"); 62 // 獲取返回的數據 63 result = EntityUtils.toString(httpResp.getEntity(), "UTF-8"); 64 } else { 65 System.out.println("狀態碼:" 66 + httpResp.getStatusLine().getStatusCode()); 67 System.out.println("HttpGet方式請求失敗!"); 68 } 69 } finally { 70 httpResp.close(); 71 httpclient.close(); 72 } 73 return result; 74 } 75 76 public static void main(String args[]) throws Exception{ 77 78 //String url = "http://baike.baidu.com/api/openapi/BaikeLemmaCardApi"; 79 //String params = "scope=103&format=json&appid=379020&bk_key=關鍵字&bk_length=600"; 80 //String s = HttpServletUtil.doPost(params, url); 81 82 String url = "http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=關鍵字&bk_length=600"; 83 String s = new HttpServletUtil().doGet(url); 84 System.out.println(s); 85 } 86 87 88 }
請求成功後以下app