Http之客户端请求服务器,服务器响应客户端。通过Handler在主线程中读取数据
2015-07-16 12:12
561 查看
Http协议
客户端请求服务器,服务器响应客户端
步骤
1、生成代表客户端的HttpClient对象
2、生成代表请求的HttpGet对象
3、发送请求,获得 服务器返回的HttpResponse对象
4、判断响应状态是否正常
5、获得相应对象中的数据
/** * 子线程Http访问服务器,取得返回的数据 * 通过Handler,主线程读取数据 */ public class HttpActivity extends Activity { private Button button; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_http); button = (Button) findViewById(R.id.button); button.setOnClickListener(new MyOnclick()); handler = new MyHandler(); } class MyOnclick implements View.OnClickListener { @Override public void onClick(View v) { //主线程当中不许访问网络 WorkThread workThread = new WorkThread(); workThread.start(); } } class WorkThread extends Thread { @Override public void run() { //生成代表客户端的HttpClient对象 HttpClient httpClient = new DefaultHttpClient(); //生成代表请求的HttpGet对象 HttpGet httpGet = new HttpGet("http://www.marschen.com/data1.html"); try { //发送请求,获得 服务器返回的HttpResponse对象 HttpResponse httpResponse = httpClient.execute(httpGet); int code = httpResponse.getStatusLine().getStatusCode(); //code等于200,说明响应状态正常 if (code == 200) { //获得相应对象中的数据 HttpEntity httpEntity = httpResponse.getEntity(); InputStream inputStream = httpEntity.getContent(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String s = bufferedReader.readLine(); //将读出的服务器数据放到message的对象中去 //使用sendMessage()发送数据 Message message = new Message(); message.obj = s; handler.sendMessage(message); } } catch (IOException e) { e.printStackTrace(); } } } class MyHandler extends Handler { @Override public void handleMessage(Message msg) { //将msg中的对象读取出来 String s = (String) msg.obj; Toast.makeText(HttpActivity.this, "输出的数据为" + s, Toast.LENGTH_SHORT).show(); } } }
相关文章推荐
- HTTP 协议漫谈
- 网络图片查看器
- http://www.cnblogs.com/wangfupeng1988/p/4001284.html
- Dart网络编程-拼字游戏
- 模仿jquery框架源码---网络
- 网络爬虫(蜘蛛)Scrapy,Python安装!
- WCF_通过使用svcutil.exe将http://*.svc?wsdl生成客户端可调用的.cs文件
- OSI模型的理解
- HttpClient 认证
- 基于TCP的网络编程
- https协议的一点疑问
- TCP、UDP、ICMP、IGMP的解释和区别
- HTTP 错误 500.0 - Internal Server Error
- TCP IP
- IIS7 HTTP/405 Method not allowed , 服务启用 PUT谓词
- 《Spring技术内幕》学习笔记17——Spring HTTP调用器实现远程调用
- android 网络交互
- HTTPS与SSL
- HDU1973 http://acm.hdu.edu.cn/showproblem.php?pid=1973
- 一个手写的 http client