世界杯赔率_男乒世界杯决赛 - fjpftz.com

HOME> 意大利无缘世界杯> Android开发中教你如何调用API

Android开发中教你如何调用API

2025-05-08 23:32:04

调用API

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

🚀第一步:配置权限

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

AndroidManifest.xml

🚀第二步:编写工具类(获取网络数据)

HttpUtils.java

package com.example.constellation.util;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.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.net.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 {

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😄

最新发表
友情链接