您的位置:首页 > 理论基础 > 计算机网络

封装网络获取数据

2018-03-29 19:43 295 查看
一、自定义MyTaskpublic class MyTask extends AsyncTask<String,Void,String> {
private IcallBack icallBack;

public MyTask(IcallBack icallBack) {

this.icallBack = icallBack;
}

@Override
protected String doInBackground(String... strings) {
String str="";
try {
URL url = new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if (responseCode==200){
InputStream inputStream = urlConnection.getInputStream();
str=toJson(inputStream);
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);

icallBack.getJsonData(s);

}

public interface IcallBack{
void getJsonData(String s);
}

private String toJson(InputStream inputStream) {
StringBuilder builder = new StringBuilder();
String string;
InputStreamReader in = new InputStreamReader(inputStream);
BufferedReader reader = new BufferedReader(in);
try {
while ((string=reader.readLine())!=null){
builder.append(string);
}
} catch (Exception e) {
e.printStackTrace();
}
return builder.toString();
}
}
二、调用MyTask myTask = new MyTask(new MyTask.IcallBack() {
@Override
public void getJsonData(String s) {
Gson gson = new Gson();
RequestData requestData = gson.fromJson(s, RequestData.class);
List<RequestData.DataBean> list = requestData.getData();
if (pagetype==1){
MainActivity.this.data.clear();
}
MainActivity.this.data.addAll(list);
setgvadapter();
plv.onRefreshComplete();

}
});

myTask.execute(urlpath);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: