调用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 .HttpURLConnection;import .MalformedURLException;import .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 .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);}//运行在子线程中,进行耗时操作等逻辑@Overrideprotected String doInBackground(String... params) {String json=HttpUtils.getJSON(params[0]);return json;}//运行主线程中,通常用来进行控件的初始化@Overrideprotected void onPreExecute() {super.onPreExecute();if(flag){dialog.show();}}//运行在主线程中,用来获取doInBackground的返回数据,还可以进行控件更新@Overrideprotected void onPostExecute(String s) {super.onPostExecute(s);if(flag){dialog.dismiss(); //返回数据了就要取消提示}listener.onSucess(s);}}
🚀第五步:加载网络数据
/*** 加载网络数据*///创建自定义异步任务对象LoadDataAsyncTask task=new LoadDataAsyncTask(this,this,true);//执行异步任务task.execute("api路径");
🚀第六步:获取返回的信息
//得到信息后执行此方法@Overridepublic void onSucess(String json) {//解析数据if(!TextUtils.isEmpty(json)){// json即返回的json数据//可以创建对应的实体类进行接收...}}
这样就🆗了,Android开发中调用api的方案之一就完成了
如有需要可以保存此文章,方便Ctrl+C,Ctrl+V😄