JAVA如何调用API

本文详细介绍了如何使用Java调用API,包括选择API、构造请求和解析响应的过程。以图灵机器人为例,展示了从创建Java工程到实现对话功能的完整步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

https://www.showapi.com/

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

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

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

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

 

 

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

其中前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. }

运行结果如下:

至此就完成了API的调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值