Android-网络编程

原创 2015年11月18日 00:10:49

Android网络编程学习记录

了解HTTP协议

分类

  • 基于Socket
  • 基于HTTP协议
    • HttpUrlconnction(java.net包中提供)
    • HttpClient(androidSDK中集成的开源框架)

服务器端返回客户端的内容有三种方式

  • HTML代码的形式返回
  • XML字符串的形式返回
  • JSON对象的方式返回

步骤

首先加上权限

  • 判断网络必须加上的权限
    <uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”/>
  • 如果判断是否连接wifi就必须加上的权限
    <uses-permission android:name=”android.permission.ACCESS_WIFI_STATE”/>
  • 上网权限
    <uses-permission android:name=”android.permission.INTERNET”/>

判断网络

    //判断手机是否连网
    public static boolean getNetState(Context context)
    {
        //ConnectivityManager 主要管理和网络连接相关的操作 
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        //获取当前网络信息类
        NetworkInfo info = cm.getActiveNetworkInfo();
        if (info == null || !info.isAvailable())
        {
            return false;
        }
        else
        {
            switch (info.getType()) {
            case ConnectivityManager.TYPE_MOBILE:
                Log.i("myout", "当前使用移动网络");
                break;
            case ConnectivityManager.TYPE_WIFI:
                Log.i("myout", "当前使用WIFI网络");
                break;
            }
            return true;
        }
    }

获取网络数据

    //这写的是一个获取网络json数据方法
    public static String getDataFromNet(String urlPath)
    {
        try 
        {
            //创建一个URL对象指定路径
            URL url = new URL(urlPath);
            //通过url打开连接获得一个HttpURLConnection对象
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            //设置连接主机超时时间,单位:毫秒
            conn.setConnectTimeout(6000);
            //设置连接从主机读取数据超时时间,单位:毫秒
            conn.setReadTimeout(6000);
            //设置请求的方法(POST、GET、、、),默认是你GET
            conn.setRequestMethod("GET");
            //获取响应的状态代码
            int code = conn.getResponseCode();
            //判断是否连接成功,如果状态码为200代表请求成功
            if (code == HttpURLConnection.HTTP_OK)
            {
                //获取数据流
                InputStream input = conn.getInputStream();
                //转换成字符流,然后转换成字符串
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                StringBuilder sb = new StringBuilder();
                String len;
                while((len = reader.readLine()) != null)
                {
                    sb.append(len);
                }
                return changeJson(sb.toString());
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
        return "no data";
    }

我的感受

  • 一定要记得权限、权限、权限、、、、
  • POST可以向服务器提交表单数据
  • 今天知道了网络连接响应码403,我请求连接,人家不搭理我。/(ㄒoㄒ)/~~

想说的话

  • 博客坚持写,不管怎么样,今后打算学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们
  • 如果内容有什么地方不对,请告知,希望大家能一起学习和成长(^o^)/~
  • 来一句:人非圣贤,孰能无过。复审代码是为了发现问题。不过如有遗漏,也不可把责任归咎于一个人身上去针对他。
版权声明:本文为博主原创文章,未经博主允许不得转载。

android-网络编程

两方面: 1.把数据从网络上请求下来。 2.根据请求下来的数据格式,进行解析。...
  • ofreelander
  • ofreelander
  • 2015年05月15日 07:00
  • 264

Android-应用开发-网络编程(四)

网络请求主线程阻塞 UI停止刷新,应用无法响应用户操作 耗时操作不应该在主线程进行 ANRapplication not responding 应用无响应异常 主线程阻塞时间过长,就会抛出ANR 主线...
  • u014657752
  • u014657752
  • 2015年08月13日 20:59
  • 229

Android-网络编程基础

Android-网络编程基础关键对象:HttpURLConnection,这个对象就像一个简单的浏览器,使用这个对象我们可以请求服务器的数据。 当我们利用这个对象访问网络时,首先应记得添加权限:访问...
  • sdlg2015
  • sdlg2015
  • 2015年09月14日 22:15
  • 261

Android-网络编程:快乐词典

做了一款翻译软件,虽然重要部分翻译是引用了有道词典,为了使英语翻译更加好看一些,但是,还是能够查询英语单词的意思了~任务:完成如图所示app 这个任务很简单,构造也是由两个文件组成 首先是布局文件...
  • MisCoder
  • MisCoder
  • 2017年06月15日 09:31
  • 152

Android-应用开发-网络编程(五)

HttpClient发送get请求 创建一个客户端对象HttpClient client = new DefaultHttpClient(); 创建一个get请求对象HttpGet hg = new ...
  • u014657752
  • u014657752
  • 2015年08月13日 20:33
  • 308

Android贝塞尔曲线——曲线初体验

Android贝塞尔曲线——一起来学习这条曲线吧。
  • rubeson
  • rubeson
  • 2017年01月17日 20:54
  • 642

android 自定义控件之AutoCompleteTextView邮箱后缀自动补全

今天,讲讲昨天看到的一个自定义的控件,可以自动补齐邮箱后缀。 效果很好: 由于原有的AutoCompleteTextView只是按照相同的字符串匹配,所以这里要自定义AutoC...
  • bzlj2912009596
  • bzlj2912009596
  • 2017年06月27日 08:56
  • 576

Android 兼容性测试(CTS)

Android兼容性测试
  • tangcheng_ok
  • tangcheng_ok
  • 2013年11月29日 10:29
  • 4448

Android多种进度条使用详解

点击打开链接
  • u013058160
  • u013058160
  • 2016年01月12日 11:21
  • 178

Android-自定义类似excel表格,双向滑动的ListView

效果图: 主要代码:/** * Created by monty on 2017/8/31. */public class PanelListLayout extends FrameLayout...
  • u011511921
  • u011511921
  • 2017年09月06日 14:26
  • 181
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android-网络编程
举报原因:
原因补充:

(最多只允许输入30个字)