JAVA调用公开API示例

https://blog.csdn.net/qq_33655674/article/details/79592305

JAVA如何调用API

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. import net.sf.json.JSONObject;
  11. public class Talk {
  12. public static String result(String info) {
  13. //接口地址
  14. String requestUrl = "http://route.showapi.com/60-27";
  15. //params用于存储要请求的参数
  16. Map params = new HashMap();
  17. //showapi_appid的值,把###替换成你的appid
  18. params.put( "showapi_appid", "###");
  19. //我们请求的字符串
  20. params.put( "info",info);
  21. //数字签名,###填你的数字签名,可以在你的个人中心看到
  22. params.put( "showapi_sign", "###");
  23. //调用httpRequest方法,这个方法主要用于请求地址,并加上请求参数
  24. String string = httpRequest(requestUrl,params);
  25. //处理返回的JSON数据并返回
  26. JSONObject pageBean = JSONObject.fromObject(string).getJSONObject( "showapi_res_body");
  27. return pageBean.getString( "text");
  28. }
  29. private static String httpRequest(String requestUrl,Map params) {
  30. //buffer用于接受返回的字符
  31. StringBuffer buffer = new StringBuffer();
  32. try {
  33. //建立URL,把请求地址给补全,其中urlencode()方法用于把params里的参数给取出来
  34. URL url = new URL(requestUrl+ "?"+urlencode(params));
  35. //打开http连接
  36. HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
  37. httpUrlConn.setDoInput( true);
  38. httpUrlConn.setRequestMethod( "GET");
  39. httpUrlConn.connect();
  40. //获得输入
  41. InputStream inputStream = httpUrlConn.getInputStream();
  42. InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
  43. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  44. //将bufferReader的值给放到buffer里
  45. String str = null;
  46. while ((str = bufferedReader.readLine()) != null) {
  47. buffer.append(str);
  48. }
  49. //关闭bufferReader和输入流
  50. bufferedReader.close();
  51. inputStreamReader.close();
  52. inputStream.close();
  53. inputStream = null;
  54. //断开连接
  55. httpUrlConn.disconnect();
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. //返回字符串
  60. return buffer.toString();
  61. }
  62. public static String urlencode(Map<String,Object>data) {
  63. //将map里的参数变成像 showapi_appid=###&showapi_sign=###&的样子
  64. StringBuilder sb = new StringBuilder();
  65. for (Map.Entry i : data.entrySet()) {
  66. try {
  67. sb.append(i.getKey()).append( "=").append(URLEncoder.encode(i.getValue()+ "", "UTF-8")).append( "&");
  68. } catch (UnsupportedEncodingException e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. return sb.toString();
  73. }
  74. //测试是否有效
  75. public static void main(String[] args) {
  76. System.out.println(result( "你好啊"));
  77. }
  78. }

运行结果如下:


至此就完成了API的调用

				<script>
					(function(){
						function setArticleH(btnReadmore,posi){
							var winH = $(window).height();
							var articleBox = $("div.article_content");
							var artH = articleBox.height();
							if(artH > winH*posi){
								articleBox.css({
									'height':winH*posi+'px',
									'overflow':'hidden'
								})
								btnReadmore.click(function(){
									if(typeof window.localStorage === "object" && typeof window.csdn.anonymousUserLimit === "object"){
										if(!window.csdn.anonymousUserLimit.judgment()){
											window.csdn.anonymousUserLimit.Jumplogin();
											return false;
										}else if(!currentUserName){
											window.csdn.anonymousUserLimit.updata();
										}
									}
									
									articleBox.removeAttr("style");
									$(this).parent().remove();
								})
							}else{
								btnReadmore.parent().remove();
							}
						}
						var btnReadmore = $("#btn-readmore");
						if(btnReadmore.length>0){
							if(currentUserName){
								setArticleH(btnReadmore,3);
							}else{
								setArticleH(btnReadmore,1.2);
							}
						}
					})()
				</script>
				</article>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值