package com.example.util;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
public class HttpUtils {
public static String getNetData(String dataUrl){
try {
URL url=new URL(dataUrl);
HttpsURLConnection connection=(HttpsURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int code = connection.getResponseCode();
if (code==200){
InputStream inputStream = connection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder=new StringBuilder();
String str="";
while ((str=reader.readLine())!=null){
builder.append(str);
}
return builder.toString();
}
}catch (Exception e){
e.printStackTrace();
}
return "";
}
public static Bitmap getNetPic(String picUrl){
try {
URL url=new URL(picUrl);
HttpsURLConnection connection=(HttpsURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int code = connection.getResponseCode();
if (code==200){
InputStream inputStream = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}
package com.example.d3_asynctask;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import com.example.util.HttpUtils;
/**
* 使用Asynctask进行异步任务处理
* 异步请求数据,,,去解析展示
* 异步请求图片,,,展示到控件
*/
public class MainActivity extends AppCompatActivity {
private String dataUrl="https://api.apiopen.top/getTangPoetry?page=1&count=20";
private String picUrl="http://wimg.spriteapp.cn/picture/2018/1209/5c0cb7c74fd49__b.jpg";
private ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = findViewById(R.id.img);
//进行异步请求数据
MyAsynctask myAsynctask = new MyAsynctask();
myAsynctask.execute(dataUrl);
//异步请求图片
new picAsynctask(img).execute(picUrl);
}
/**
* 创建内部类———请求数据的
*/
public class MyAsynctask extends AsyncTask<String,Void,String>{
/**
*主线程———更新UI
*/
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("aaa","onPostExecute:"+s);
}
/**
*子线程——耗时操作
*/
@Override
protected String doInBackground(String... strings) {
//请求网络数据
String data = HttpUtils.getNetData(strings[0]);
return data;
}
}
/**
* 创建内部类———请求图片的
*/
public class picAsynctask extends AsyncTask<String,Void,Bitmap>{
ImageView iv;
public picAsynctask(ImageView iv) {
this.iv = iv;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
//展示图片
iv.setImageBitmap(bitmap);
}
@Override
protected Bitmap doInBackground(String... strings) {
//请求图片
Bitmap pic = HttpUtils.getNetPic(strings[0]);
return pic;
}
}
}