Android中调⽤api接⼝
1.创建⼀个类继承AsyncTask类使该类作为⼀个异步任务类
2.该类中重写doInBackground⽅法和onPostExecute⽅法
3.在需要调⽤api接⼝的Activty中new⼀个该类并调⽤api地址即可
1.异步任务类中的代码
注意:其中重写的第⼀个⽅法(doInBackground)是负责调⽤api接⼝并接收返回数据的(return的数据⾃动传⼊第⼆个⽅法), ⽽第⼆个⽅法(onPostExecute)是负责对传⼊的json数据进⾏操作的
//泛型⽤从左到右分别表⽰
//1.传⼊url参数类型,2.⼀般为Void对象(有进度条的需求才使⽤),3.doInBackGround⽅法返回值类型
public class GetItemProductTask extends AsyncTask<String,Void,String> {
//需要传⼊内容的控件
private TextView title;
private TextView price;
private TextView desc;
//构造器
public GetItemProductTask(TextView title, TextView price, TextView desc) {
this.title = title;
this.price = price;
this.desc = desc;
}
//负责调⽤api接⼝接收数据的⽅法
//该⽅法⾥代码直接复制即可,该⽅法获得的json数据会⾃动传⼊onPostExecute⽅法
@Override
protected String strings) {
try {
HttpURLConnection con = (HttpURLConnection) new URL(strings[0]).openConnection();
int code = ResponseCode();
if(code==200){
InputStream is = InputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
int n = 0;
byte[] buf = new byte[1024];
while((ad(buf))!=-1) {
out.write(buf, 0, n);
}
String str = String("UTF-8");
return str;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//负责操作数据的⽅法
//doInBackground⽅法获得的数据会⾃动传到该⽅法
@Override
protected void onPostExecute(String json) {
//使⽤Gson解析json数据转Map对象
Map<String,String> map = new Gson().fromJson(json, Map.class);
if (map!=null){
title.("title"));
price.("price"));
desc.("sell_point"));
}
百度api接口}
}
2.Activity中的代码
//传⼊控件以及地址即可执⾏异步任务
new GetItemProductTask(title,price,desc)
.execute("你的api地址");
//图⽚的返回类型必须为Bitmap
public class ImgUrlToViewTask extends AsyncTask<String,Void,Bitmap> {
private ImageView imageView;
public ImgUrlToViewTask(ImageView imageView) {
this.imageView = imageView;
}
@Override
protected Bitmap strings) {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(strings[0]).openConnection(); t();
int code = ResponseCode();
if(code == 200){
InputStream is = InputStream();
Bitmap bmp = BitmapFactory.decodeStream(is);
/*if(bmp!=null){
MainActivity.cache.put(strings[1],bmp);
}*/
return bmp;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//适配图⽚到控件中
@Override
protected void onPostExecute(Bitmap bitmap) {
if(bitmap!=null) {
imageView.setImageBitmap(bitmap);
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论