零碎*学习安卓开发——使用网咯技术

WebView

可以在应用程序中嵌入一个浏览器,可以不跳转到浏览器应用展示网页。

WebView webView = (WebView)findByViewId();
webView.getSettings().setJavaScriptEnabled(true); //设置一些浏览器属性
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("http://www.baidu.com");  

本控件访问了网络,需要申请权限:INTERNET



使用HTTP协议访问网络

WebView已经在后台已经对发送HTTP请求、接受服务响应、解析返回数据、展示页面进行了封装。且WebView还有很多更高级的用法,《第一行代码》不做深入探讨。

Android6.0抛弃HttpClient后,发送HTTP请求则剩下使用HttpURLConnection。

private void sendRequestWithHttpURLConnection(){    //发送HTTP请求的方法
    new Thread(new Runnable(){     //开启一个子线程用于发送Http请求
        public void run(){
            HttpURLConnection connection = null;
            NifferedReader reader = null;
            try{
                URL url = new URL("https://www.baidu.com");  //设置URL对象
                connection = (HTttpURLConnection)url.openConnection(); //获取HttpURLConnection实例
                connection.setRequestMethod("GET");  //设置请求方法
                connection.setConnectTimeout(8000);  //设置连接超时
                connection.setReadTimeout(8000);  //设置读取超时,还可以设置希望得到的消息头等
                InputStream in = connection.getInputStream();  //调用getInputStream获取返回的输入流
                reader = new BufferedReader(new InputStreamReader(in)); //对输入流读取
                StringBuilder reponse = new StringBuilder();
                String line;
                while((line = read.readLine()) != null){
                    reponse.append(line);
                }
            catch(Exception e){
                e.printStackTrace();
            }
            finally{
                if(reader != null){
                    try{
                        reader.close();   //关闭读取流
                    }
                    catch(IOException e){
                        e.printStackTrace();
                    }
                }
                if(connection != null){
                    connection.disconnect();   //在finally中将connection链接关闭
                }
            }
        }
    }).start();   //开启线程
}

在子线程中要进行UI操作需要切换到主线程,使用runOnUiThread()方法。

通过HTTP提交数据给服务器:

connection.setRequestMethod("POST");
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes("username=admin&password=123456"); //通过键值对形式,用&分割

使用HttpURLConnection基本步骤:

  1. 通过URL.openConnection()方法获取HttpURLConnection实例。
  2. 设置请求方法(get或post)。
  3. 设置请求属性。
  4. 获取数据、写出数据。
  5. 关闭各种流,利用HttpURLConnection.disconnect()关闭。


使用其他开源网络通信库代替原生的HttpURLConnection

OkHttp

接口封装简单易用,底层实现自成一派,已成为广大Android开发者首选的网络通信库。主页地址:https://github.com/square/okhttp

添加依赖

...
    implementation ‘com.squqreup.okhttp3:okhttp:3.4.1‘    //最新版本号在主页上查看
...

具体用法

OkHttpClient client = new OkHttpClient();  //创建一个OkHttpClient实例
Request request = new Request.Builder().[连缀][连缀].build();  //创建一个Request对象以发起Http请求
Response response = client.newCall(request).execute(); //调用OkHttpClient的newCall()方法创建一个Call对象,并调用其execute()方法来发送请求并获取服务器返回的数据
String responseData = response.body().string(); //获取返回的数据

//发起POST请求比GET复杂,需要先构建一个RequestBody对象来存放待提交的参数
RequestBody requestBody = new FormBody.Builder().[][]build(); //连缀可使用add()方法添加键值对参数
Request request = new Request.Builder().[][].buid(); //连缀加入url("http://xxx")和post(requestBody)方法可以设置Request对象的目标地址和传出的数据
  1. 创建一个OkHttpClient实例
  2. 创建request
  3. 创建response
  4. 获取返回的响应体或响应头信息


解析数据

XML使用较少,先跳过学习

解析JSON格式数据

JSON相比于XML,优点在于体积更小,缺点在于语义性较差,不直观。

原文地址:https://www.cnblogs.com/donkiss/p/10351383.html

时间: 2024-10-22 22:34:51

零碎*学习安卓开发——使用网咯技术的相关文章

.Net程序员快速学习安卓开发-布局和点击事件的写法

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 本系列课程 致力于老手程序员可以快速入门学习安卓开发.系统全面的从一个.Net程序员的角度一步步学习总结安卓开发. 上篇课程:全栈工程师必备:安卓移动端手机开发,第六课 主要内容: 布局 点击事件 布局 说到安卓前台页面的开发,就不得不说安卓的布局.也就是具体那个控件应该摆放的位置. 1.1相对布局 我们新建一个layout布局文件时,默认就是相对布局.相对布局是相对于非相对布局来说的.顾名思义,相对布

程序员带你学习安卓开发系列-Android文件存储

这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充: 控件单位介绍: px 像素 dip或者dp 设备独立像素 sp 比例像素 控件的高度宽度一般用dip或者dp.字体用sp. Android 存储数据项目: 描述:实现QQ登录效果.如图: 输入帐号密码,并勾选记住帐号 ,点击登录时,保存帐号信息.下次登陆可以直接显示上次保存的QQ帐号. 前台界面

程序员带你学习安卓开发,十天快速入门-基础知识(四)

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 本系列课程是.Net程序员学习安卓开发系列课程. 下面是前三次课程列表: 程序员带你学习安卓开发,十天快速入门-安卓学习必要性 程序员带你学习安卓开发,十天快速入门-开发工具配置学习 程序员带你学习安卓开发,十天快速入-对比C#学习java语法 为了大家系统有效的快速入门安卓开发,推荐

程序员带你学习安卓开发,十天快速入门-开发工具配置学习

上次课程:.Net程序员学习Android开发-第一课 讲到,.Net程序员学习Android开发的必要性以及对安卓大环境的相关介绍. 其中看到有网友评论,称,搞C#的去搞安卓,还怪自己的移动平台不给力.有的人说,学习.Net就学.Net学习什么安卓.这时的我首先想到了,固步自封的大清朝.当然并不是对这部分人排斥.只能说是想法不一致,认知略有不同,也没有错与对,我只是想把我自己的想法表达出来,期望与您产生共鸣.的确迄今为止,我仍然认为C#是当今我见过的最好的语言.设计规范语法总使我赶到兴奋其优美

程序员带你学习安卓开发,十天快速入-对比C#学习java语法

关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到熟悉的效果. 上次课程:.程序员带你学习安卓开发,十天快速入门-开发工具配置学习讲的是java环境的配置以及as安装工具的安装. 其中有网友@鹅鹅鹅_说道,其实jdk的环境变量配置,不用配置的那么麻烦了.当前的jdk版本只要设置一个变量javahome就可以了,其他的可以不需要配置.在这里提一下.

程序员带你学习安卓开发-XML文档的创建与解析

这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:程序员带你学习安卓开发系列-Android文件存储 因知识连贯性推荐关注头条号:做全栈攻城狮.从头开始学习. 链接:http://www.toutiao.com/m5443584213/ 项目概述: 学生信息管理系统.添加学生信息,到XML文件库. 显示所有添加的学生列表. 界面: 前台界面代码: XML生成: 生成的xml: XML解析: 更多教程,欢迎大家关注今日头条-做全栈攻城狮.一起交流探

安卓开发_数据存储技术_sqlite

一.SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用 二.SQLite特性 1 2 1.轻量级 3 SQLite和C\S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器.使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能.而且那个动态库的尺寸也相当小. 4 2.独立性 5 SQLite数据库的核心引擎本身

新人学习安卓开发遇到的小问题总结

1. IDE搭建: 搭建android的IDE时,先注意是什么版本的系统,64/32位系统. 通常使用的是Eclipse for android,Android Studio由于还需要FQ,网速慢,所以不推荐使用. 2. Eclipse字体大小设置: 窗口(window) —— 首选项(preference)——外观(Appearance) —— 颜色和字体(Colors and Fonts) 3. Eclicpse装入工作台停止工作: 出现这种问题可能是由于Eclipse意外停止运行或者其他情

安卓开发_数据存储技术_SharedPreferences类

SharedPreferences类 供开发人员保存和获取基本数据类型的键值对. 该类主要用于基本类型,例如:booleans,ints,longs,strings.在应用程序结束后,数据仍旧会保存. 有两种方式可以获得SharedPreferences对象 1.getSharedPreferences():  如果需要多个使用名称来区分的共享文件,则可以使用该方法,其第一个参数就是共享文件的名称. 对于使用同一个名称获得的多个SharedPreferences引用,其指向同一个对象 2.get