网络请求数据之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();
};
}
}
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();
};
}
}
相关文章推荐
- VPS CentOS-6 下 LNMP HTTP服务器的搭建
- virtualbox+Ubuntu网络连接思路
- vector::erase()方法的详细介绍及问题解答 (2010-04-20 09:09:11) http://bbs.csdn.net/topics/390902650?page=1
- 网络请求之HttpClient
- 请求网络之HttpUrlConnection
- 网络请求库
- HttpClient获取网络数据
- HttpURLConntion
- HttpClient请求网络
- 用HttpUtils加载网络数据
- 深入浅出-iOS的TCP/IP协议族剖析&&Socket
- 【模板】网络流模板
- 多线程下载之断点续传采用随机文件读取流,HttpConnection实现
- Servlet—HttpServlet、Servlet线程安全
- Servlet—TomCat、HTTP协议
- 【网络编程】——ne-snmp开发实例1
- iOS SDK9下对网络请求的url进行UTF8编码
- HDU4292-Food-网络流
- android 网络框架性能优化分析
- HTTP协议详解(真的很经典)