admin管理员组

文章数量:1794759

Android开发中教你如何调用API

Android开发中教你如何调用API

调用API

无论什么开发都有可能接触到API的调用 这里我就讲一件Android开发中如何调用

🚀第一步:配置权限

android.permission.INTERNET 允许程序打开网络套接字(Allowsapplications to open network sockets)

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/> 🚀第二步:编写工具类(获取网络数据)

HttpUtils.java

package com.example.constellation.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.HttpURLConnection; import java.MalformedURLException; import java.URL; public class HttpUtils { //获取网络数据 public static String getJSON(String path){ String json=""; try { //将数据转为url对象 URL url= new URL(path); //获取网络连接对象 HttpURLConnection conn=(HttpURLConnection)url.openConnection(); //开始连接 conn.connect(); //读取输入流内容 InputStream is=conn.getInputStream(); //读取流 int hasRead=0; byte[]buf =new byte[1024]; ByteArrayOutputStream bos=new ByteArrayOutputStream(); //循环读取 while (true){ hasRead=is.read(buf); if(hasRead==-1){ break; } bos.write(buf,0,hasRead); } is.close(); json=bos.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return json; } } 🚀第三步:编写接口类(调用api的接口)

URLContent.java

package com.example.constellation.util; import java.URLEncoder; public class URLContent { //星座配对接口 public static String getParnterURL(){ String url="接口路径"; return url; } } 🚀第四步:编写AsyncTask<参数类型,进度,返回类型>,获取数据的过程中会弹出加载动画

asynctask是Android中的一个自带的轻量级异步类,通过他可以轻松的实现工作线程和UI线程之间的通信和线程切换(其实也只能在工作和ui线程之间切换,稍后会提到)

LoadDataAsyncTask.java 继承AsyncTask

package com.example.constellation.util; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; public class LoadDataAsyncTask extends AsyncTask<String,Void,String> { Context context; onGetNetDataListener listener; ProgressDialog dialog; boolean flag=false; private void initDialog(){ dialog=new ProgressDialog(context); dialog.setTitle("提示信"); dialog.setMessage("正在加载中...."); } public LoadDataAsyncTask(Context context, onGetNetDataListener listener,boolean flag) { this.context = context; this.listener = listener; this.flag=flag; initDialog(); } //获取网络数据接口 public interface onGetNetDataListener{ public void onSucess(String json); } //运行在子线程中,进行耗时操作等逻辑 @Override protected String doInBackground(String... params) { String json=HttpUtils.getJSON(params[0]); return json; } //运行主线程中,通常用来进行控件的初始化 @Override protected void onPreExecute() { super.onPreExecute(); if(flag){ dialog.show(); } } //运行在主线程中,用来获取doInBackground的返回数据,还可以进行控件更新 @Override protected void onPostExecute(String s) { super.onPostExecute(s); if(flag){ dialog.dismiss(); //返回数据了就要取消提示 } listener.onSucess(s); } } 🚀第五步:加载网络数据 /** * 加载网络数据 */ //创建自定义异步任务对象 LoadDataAsyncTask task=new LoadDataAsyncTask(this,this,true); //执行异步任务 task.execute("api路径"); 🚀第六步:获取返回的信 //得到信后执行此方法 @Override public void onSucess(String json) { //解析数据 if(!TextUtils.isEmpty(json)){ // json即返回的json数据 //可以创建对应的实体类进行接收... } }

这样就🆗了,Android开发中调用api的方案之一就完成了 如有需要可以保存此文章,方便Ctrl+C,Ctrl+V😄

本文标签: 教你如何androidAPI