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

网络请求数据之AsyncTask

2016-02-21 20:21 363 查看


public class MainActivity extends Activity {

String url="http://www.baidu.com";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

MyasyTask task = new MyasyTask();

try {

String execute = task.execute("http://apis.juhe.cn/goodbook/catalog?",url).get();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ExecutionException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

return super.onKeyDown(keyCode, event);

}

class MyasyTask extends AsyncTask<String, String, String>{

@Override

protected void onPreExecute() {

super.onPreExecute();

Toast.makeText(MainActivity.this, "准备开始联网", 0).show();

}

//子线程中作耗时操作

@SuppressLint("ShowToast")

@Override

protected String doInBackground(String... params) {

publishProgress("快","","");

publishProgress("要","","");

publishProgress("放","","");

publishProgress("学","","");

publishProgress("了","","");

String s1 = params[0];//获得需要请求数据的地址并将地址传到onpostExecute

HttpClient httpClient=new DefaultHttpClient();

HttpPost httpPost=new HttpPost(s1);

//post

List<NameValuePair> list=new ArrayList<NameValuePair>();

list.add(new BasicNameValuePair("key", "cca134699ab46a8322a322c8c011449a"));

UrlEncodedFormEntity baEntity;

String str=null;

try {

baEntity = new UrlEncodedFormEntity(list);

httpPost.setEntity(baEntity);

//执行联网操作,并请求回响应值

HttpResponse response = httpClient.execute(httpPost);

int code = response.getStatusLine().getStatusCode();

if(code==200){

HttpEntity entity = response.getEntity();

str = EntityUtils.toString(entity);

}

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return str;

}

protected void onPostExecute(String result) {

Log.i("hhh", result);

};

//在publishprogress后调用并接收传的进度值

protected void onProgressUpdate(String[] values) {

Toast.makeText(MainActivity.this,values[0], 0).show();

};

}

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