package com.example.a03_asynctask_httpclient_02; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; public class MainActivity extends AppCompatActivity { private ProgressBar pb; private TextView tv; private MyTask myTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); pb = (ProgressBar) findViewById(R.id.pb); } public void excute(View view) { myTask = new MyTask(); myTask.execute(); } public void cancel(View view) { myTask.cancel(true); } class MyTask extends AsyncTask<String, Integer, String> { @Override protected void onPreExecute() { tv.setText("正在加载……"); } @Override protected String doInBackground(String... strings) { Log.i("-----", "doInBackground"); try { HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(strings[0]); HttpResponse response = client.execute(httpGet); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 200) { HttpEntity entity = response.getEntity(); InputStream inputStream = entity.getContent(); long total = entity.getContentLength(); int count = 0; InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String string = null; StringBuilder builder = new StringBuilder(); while ((string = bufferedReader.readLine()) != null) { count = count + string.getBytes().length; int progress = (int) (count * 100 / total); publishProgress(progress); builder.append(string); } bufferedReader.close(); return builder.toString(); } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onProgressUpdate(Integer... values) { tv.setText("正在加载……" + values[0] + "%"); pb.setProgress(values[0]); } @Override protected void onPostExecute(String s) { Log.i("----", "onPostExecute" + s); tv.setText(s); } @Override protected void onCancelled() { pb.setProgress(0); } } }
asynctask_httpclient_02
最新推荐文章于 2018-11-02 15:49:32 发布