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

不操千曲而后晓声,观千剑而后识器。这篇文章主要讲述零碎*学习安卓开发——使用网咯技术相关的知识,希望能为你提供帮助。
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 = https://www.songbingjia.com/android/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,优点在于体积更小,缺点在于语义性较差,不直观。
 

    推荐阅读