public class GetJsonDataTask extends AsyncTask{ private TextView tv; public GetJsonDataTask(TextView tv) { super(); this.tv = tv; } /** * 这里的String参数对应AsyncTask中的第一个参数 * 这里的String返回值对应AsyncTask的第三个参数 * 该方法并不运行在UI线程当中,主要用于异步操作,所有在该方法中不能对UI当中的空间进行设置和修改 * 但是可以调用publishProgress方法触发onProgressUpdate对UI进行操作 */ @Override protected String doInBackground(String... urls) { try { URL url = new URL(urls[0]); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); String resp_content = ""; int code = conn.getResponseCode(); if (code == 200) { InputStream is = conn.getInputStream(); resp_content = readInputStreamToString(is); } return resp_content; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 这里的String参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值) * 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI控件进行设置 */ @Override protected void onPostExecute(String s) { super.onPostExecute(s); tv.setText(s); } //字节流转换成字符串 private static String readInputStreamToString(InputStream is) { byte[] result; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = is.read(buffer)) != -1) { baos.write(buffer, 0, len); } is.close(); baos.close(); result = baos.toByteArray(); } catch (IOException e) { e.printStackTrace(); return "获取数据失败"; } return new String(result); } }