-
需要异步处理,所以构造一个异步处理的类
//异步任务处理
class RequestNetworkDataTask extends AsyncTask<String, Integer, String> {
//在后台处理之前触发
//这个在主线程中
@Override
protected void onPreExecute() {
super.onPreExecute();
}//后台处理 //这个在另一个线程执行 @Override protected String doInBackground(String... params) { //此处的RequestData()是自己封装的返回网络请求的一个方法 String result = RequestData(params[0]); return result; } //后台处理完之后 //这个在主线程中执行 //里面的参数s是doInBackground()的返回结果 @Override protected void onPostExecute(String s) { super.onPostExecute(s); mTvResult.setText(s); } } /*--------------------------------------------------------------------*/ //请求网络数据 private String RequestData(String urlString) { try { URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置超时时间 connection.setConnectTimeout(30000); connection.setRequestMethod("GET"); connection.connect(); int responsecode = connection.getResponseCode(); String responseMessage = connection.getResponseMessage(); String result = null; if (responsecode == HttpURLConnection.HTTP_OK) { InputStream inputStream = connection.getInputStream(); Reader reader = new InputStreamReader(inputStream, "UTF-8"); char[] buffer = new char[1024]; reader.read(buffer); result = new String(buffer); } return result; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }
-
写完方法后就new刚才的类,即
//url是一个链接地址
new RequestNetworkDataTask().execute(url);
网友评论