JAVA如何呼叫API
阿新 • • 發佈:2018-12-30
Java呼叫API很簡單,主要分為三步:①找到要呼叫的API介面②向指定URL新增引數傳送請求③對返回的字串進行處理
我用的API介面是在易源資料上找到的,上面有很多可以免費使用的介面
https://www.showapi.com/
當找好了要使用的API那麼就是傳送請求了,這裡我選擇的是圖靈機器人,我們來看一下它的介面要求:
上面說明了它的介面地址、返回格式以及請求方式
那麼它的請求引數有兩個,其中info是必須的,也就是我們傳送向圖靈機器人要說的的話。
返回是一個JSON字串,這裡我們只需要text的內容即可
下面我們具體來呼叫一下,首先新建一個Java工程,並加入以下jar包,
其中前6個是處理JSON字串必須的,最後一個servlet-api是用於傳送http求用的。
然後新建一個名為Talk的Java類,具體程式碼如下
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; public class Talk { public static String result(String info) { //介面地址 String requestUrl = "http://route.showapi.com/60-27"; //params用於儲存要請求的引數 Map params = new HashMap(); //showapi_appid的值,把###替換成你的appid params.put("showapi_appid","###"); //我們請求的字串 params.put("info",info); //數字簽名,###填你的數字簽名,可以在你的個人中心看到 params.put("showapi_sign","###"); //呼叫httpRequest方法,這個方法主要用於請求地址,並加上請求引數 String string = httpRequest(requestUrl,params); //處理返回的JSON資料並返回 JSONObject pageBean = JSONObject.fromObject(string).getJSONObject("showapi_res_body"); return pageBean.getString("text"); } private static String httpRequest(String requestUrl,Map params) { //buffer用於接受返回的字元 StringBuffer buffer = new StringBuffer(); try { //建立URL,把請求地址給補全,其中urlencode()方法用於把params裡的引數給取出來 URL url = new URL(requestUrl+"?"+urlencode(params)); //開啟http連線 HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoInput(true); httpUrlConn.setRequestMethod("GET"); httpUrlConn.connect(); //獲得輸入 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); //將bufferReader的值給放到buffer裡 String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } //關閉bufferReader和輸入流 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); inputStream = null; //斷開連線 httpUrlConn.disconnect(); } catch (Exception e) { e.printStackTrace(); } //返回字串 return buffer.toString(); } public static String urlencode(Map<String,Object>data) { //將map裡的引數變成像 showapi_appid=###&showapi_sign=###&的樣子 StringBuilder sb = new StringBuilder(); for (Map.Entry i : data.entrySet()) { try { sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return sb.toString(); } //測試是否有效 public static void main(String[] args) { System.out.println(result("你好啊")); } }
執行結果如下:
至此就完成了API的呼叫