文档章节

android常用的http请求

新根
 新根
发布于 2015/07/23 14:07
字数 413
阅读 255
收藏 9

Handler handler = new Handler(new android.os.Handler.Callback() {
     @Override
      public boolean handleMessage(Message msg) {
          switch (msg.arg1) {
             case 1:  // 对获取的数据进行操作

                   break;
              case 2:  // 对获取到数据进行操作

                    break;
              default:

                  break;
            }

          return false;
       }
 });

 

//联网前,检查网络的操作在此省略不写。

 public void sendWebRequest() {
         new Thread(new Runnable() {
              @Override
               public void run() {
                     HttpURLConnection conn = null;
                      try {
                           URL url = new URL("www.baidu.com");
                           conn = (HttpURLConnection) url.openConnection();
                           conn.setRequestMethod("GET");// get请求方式:从服务端读取数据

                         /*
                          * post:将数据提交到服务端。 注意点: 每条数据以键值对形式存在 数据间用 & 分隔
                          * conn.setRequestMethod("POST"); //post:将数据提交到服务端
                          * DataOutputStream dataoutputstream=new DataOutputStream( conn.getOutputStream() );
                          * dataoutputstream.writeBytes("username=haha&password=123456" );

                          //每条数据以键值对形式存在,数据间用 & 分隔
                         */

                             conn.setConnectTimeout(8 * 1000);
                             conn.setReadTimeout(1000 * 8);
                             conn.connect();

                             BufferedReader reader = new BufferedReader(
                                                      new InputStreamReader(conn.getInputStream()));
                             StringBuffer buffer = new StringBuffer(); // 用于存储获取到的数据
                             String line;
                             while ((line = reader.readLine()) != null) {
                                           buffer.append(line);
                              }
                             // 注意点: 子线程不能对UI控件操作,需要到主线程(即UI线程)才能操作ui控件
                            Looper.prepare();
                            Message message = handler.obtainMessage();
                            message.obj = buffer;
                            message.arg1 = 1;
                            handler.sendMessage(message);
                           Looper.loop();

                        } catch (Exception e) {
                              e.printStackTrace();
                       }

                       finally {
                               if (conn != null) {
                                   conn.disconnect();
                                }
                       }

             }
        }).start();

    }

   public void sendhttpconnet() {
           new Thread(new Runnable() {
                   public void run() {
                       try {
                            // HttpClient是一个接口,不能new 本身。 故new 一个默认的httpclient
                           HttpClient httpclient = (HttpClient) new DefaultHttpClient();
                           HttpGet get = new HttpGet("http://www.baidu.com");  // get请求
                           /*
                            * post 请求:提交数据到服务端,或者上传文件到服务端 HttpPost post=new
                            * HttpPost("http://www.baidu.com"); List<NameValuePair>
                            * parameters=new ArrayList<NameValuePair>(); //用来存放数据
                            * parameters.add(new BasicNameValuePair("name", "admin"));
                            * parameters.add(new BasicNameValuePair("pwd", "123456"));
                            * UrlEncodedFormEntity entity1=new UrlEncodedFormEntity(parameters, "utf-8");
                            * post.setEntity(entity1);
                            */

                            HttpResponse respone = httpclient.execute(get);

                           // 判断是否请求成功
                           if (respone.getStatusLine().getStatusCode() == 200) {
                                       HttpEntity entity = respone.getEntity();
                                       String s = EntityUtils.toString(entity, "utf-8"); // 转换成 String 类型

                                       Looper.prepare();
                                       Message message = handler.obtainMessage();
                                       message.obj = s;
                                       message.arg1 = 2;
                                       handler.sendMessage(message);
                                       Looper.loop();

                           }
                       } catch (Exception e) {
                            e.printStackTrace();
                       }

                  }
            }).start();
   }

© 著作权归作者所有

上一篇: Edittext输入中文
下一篇: 自定义logutils
新根
粉丝 5
博文 28
码字总数 9431
作品 0
深圳
程序员
私信 提问
加载中

评论(0)

Android中的几种网络请求方式详解

Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面介绍四种常用网络请求方式,我这边是通过Android单元测试来完成这四种方法的,还不清楚Android的单元测试的同学们请...

天高空
2011/12/29
4.8K
4
Unity中Android API 28之后无法HTTP请求

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/zhenghongzhi6/article/details/90294799 本文节选自洪流学堂公众号技...

关尔Manic
2019/05/17
0
0
Android Studio 插件开发详解二:工具类

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自【赵彦军的博客】 在插件开发过程中,我们按照开发一个正式的项目来操作,需要整理一些常用工具类。 ...

赵彦军
2017/11/10
0
0
六款值得推荐的android(安卓)开源框架简介【转】

1、volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载; (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求...

hkstar35
2014/07/11
313
0
六款值得推荐的android(安卓)开源框架简介【转】

1、volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载; (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求...

火蚁
2014/07/09
683
1

没有更多内容

加载失败,请刷新页面

加载更多

那些自媒体大佬都在运营的必备工具有哪些?你有没有学到?

要想学好做自媒体,那你就得学会给自己制定一个小阶段的目标,有了目标,你做的时候才会更有动力,最近有人问我那些自媒体大佬都在运营的必备工具有哪些?说到这一点,我先恭喜你,因为你也学...

易撰
20分钟前
15
0
JavaScript 浮点数运算的精度问题 之解决办法bignumber.js

上一篇文章已经说了精度问题之原理 https://my.oschina.net/xiaogg/blog/2998192 也说了一些解决办法 今天我说一下新的方法 就是利用 bignumber.js 这个插件.我把这个插件应用到了买菜算的计...

xiaogg
28分钟前
19
0
Docker apt-get更换国内源解决Dockerfile构建速度过慢

创建Dockerfile并且更新apt源 在Dockerfile中添加如下两句代码: RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.listRUN apt-get clean 更新apt源的Docke......

Rhynie
29分钟前
6
0
干货|科技赋能硬核直播带货,助力业绩逆势增长

新年伊始,新冠疫情令许多企业遭遇生存危机,而每次危机和逆境,也都会带来新的商业机会。宜信财富迎难而上,勇于尝试线上销售新“路数”——直播带货,实现业绩逆势增长。2020年2月,宜信财...

宜信技术学院
36分钟前
17
0
单片机的基本构成及工作原理

有了电子电路和数字电路的基础知识,就可以开始学习嵌入式系统的核心元件-单片机。从本期开始我们将为大家介绍单片机的基础知识。 在单片机入门系列讲座中,首先学习单片机的基本构成和工作原...

demyar
38分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部