JAVA如何调用API

Java调用API很简单,主要分为三步:①找到要调用的API接口②向指定URL添加参数发送请求③对返回的字符串进行处理

 

我用的API接口是在易源数据上找到的,上面有很多可以免费使用的接口

https://www.showapi.com/

JAVA如何调用API

当找好了要使用的API那么就是发送请求了,这里我选择的是图灵机器人,我们来看一下它的接口要求:

JAVA如何调用API

上面说明了它的接口地址、返回格式以及请求方式

那么它的请求参数有两个,其中info是必须的,也就是我们发送向图灵机器人要说的的话。

JAVA如何调用API

返回是一个JSON字符串,这里我们只需要text的内容即可

 

 JAVA如何调用API

下面我们具体来调用一下,首先新建一个Java工程,并加入以下jar包,

JAVA如何调用API

其中前6个是处理JSON字符串必须的,最后一个servlet-api是用于发送http求用的。

然后新建一个名为Talk的Java类,具体代码如下

 
  1. import java.io.BufferedReader;

  2. import java.io.InputStream;

  3. import java.io.InputStreamReader;

  4. import java.io.UnsupportedEncodingException;

  5. import java.net.HttpURLConnection;

  6. import java.net.URL;

  7. import java.net.URLEncoder;

  8. import java.util.HashMap;

  9. import java.util.Map;

  10.  
  11.  
  12. import net.sf.json.JSONObject;

  13.  
  14. public class Talk {

  15.  
  16. public static String result(String info) {

  17. //接口地址

  18. String requestUrl = "http://route.showapi.com/60-27";

  19. //params用于存储要请求的参数

  20. Map params = new HashMap();

  21. //showapi_appid的值,把###替换成你的appid

  22. params.put("showapi_appid","###");

  23. //我们请求的字符串

  24. params.put("info",info);

  25. //数字签名,###填你的数字签名,可以在你的个人中心看到

  26. params.put("showapi_sign","###");

  27. //调用httpRequest方法,这个方法主要用于请求地址,并加上请求参数

  28. String string = httpRequest(requestUrl,params);

  29. //处理返回的JSON数据并返回

  30. JSONObject pageBean = JSONObject.fromObject(string).getJSONObject("showapi_res_body");

  31. return pageBean.getString("text");

  32. }

  33.  
  34. private static String httpRequest(String requestUrl,Map params) {

  35. //buffer用于接受返回的字符

  36. StringBuffer buffer = new StringBuffer();

  37. try {

  38. //建立URL,把请求地址给补全,其中urlencode()方法用于把params里的参数给取出来

  39. URL url = new URL(requestUrl+"?"+urlencode(params));

  40. //打开http连接

  41. HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

  42. httpUrlConn.setDoInput(true);

  43. httpUrlConn.setRequestMethod("GET");

  44. httpUrlConn.connect();

  45.  
  46. //获得输入

  47. InputStream inputStream = httpUrlConn.getInputStream();

  48. InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");

  49. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

  50.  
  51. //将bufferReader的值给放到buffer里

  52. String str = null;

  53. while ((str = bufferedReader.readLine()) != null) {

  54. buffer.append(str);

  55. }

  56. //关闭bufferReader和输入流

  57. bufferedReader.close();

  58. inputStreamReader.close();

  59. inputStream.close();

  60. inputStream = null;

  61. //断开连接

  62. httpUrlConn.disconnect();

  63.  
  64. } catch (Exception e) {

  65. e.printStackTrace();

  66. }

  67. //返回字符串

  68. return buffer.toString();

  69. }

  70.  
  71. public static String urlencode(Map<String,Object>data) {

  72. //将map里的参数变成像 showapi_appid=###&showapi_sign=###&的样子

  73. StringBuilder sb = new StringBuilder();

  74. for (Map.Entry i : data.entrySet()) {

  75. try {

  76. sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");

  77. } catch (UnsupportedEncodingException e) {

  78. e.printStackTrace();

  79. }

  80. }

  81. return sb.toString();

  82. }

  83. //测试是否有效

  84. public static void main(String[] args) {

  85.  
  86. System.out.println(result("你好啊"));

  87. }

  88.  
  89. }

运行结果如下:

JAVA如何调用API

至此就完成了API的调用