Android-网络编程

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^)/~
  • 来一句:人非圣贤,孰能无过。复审代码是为了发现问题。不过如有遗漏,也不可把责任归咎于一个人身上去针对他。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值