网络---《第一行代码Android》笔记
16lz
2021-01-24
-
- WebView的用法
- 使用HttpURLConnection连接网络
- 使用OkHttp工具连接网络
WebView的用法
用于展示一个网页,相当于一个嵌入式的浏览器。
添加权限
<uses-permission android:name="android.permission.INTERNET" />
package com.example.webviewtest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.webkit.WebView;import android.webkit.WebViewClient;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取webview对象 WebView webView = (WebView) findViewById(R.id.web_view); //设置允许执行js webView.getSettings().setJavaScriptEnabled(true); //这段代码的作用,在需要从一个网页跳转到另一个网页时,仍在当前webview打开,而不是打开系统浏览器 webView.setWebViewClient(new WebViewClient()); //传入网址 webView.loadUrl("http://www.baidu.com"); }}
使用HttpURLConnection连接网络
开启权限:
<uses-permission android:name="android.permission.INTERNET" />
例子:
private void sendRequestWithHttpURLConnection() { // 开启线程来发起网络请求 new Thread(new Runnable() { @Override public void run() { HttpURLConnection connection = null; BufferedReader reader = null; try { URL url = new URL("http://www.baidu.com"); connection = (HttpURLConnection) url.openConnection(); //GET:表示从服务器端获取数据;POST:表示提交数据到服务器,下面是例子:// connection.setRequestMethod("POST");// DataOutputStream out=new DataOutputStream(connection.getOutputStream());// out.writeBytes("username=admin&password=123456"); connection.setRequestMethod("GET"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); InputStream in = connection.getInputStream(); // 下面对获取到的输入流进行读取 reader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } showResponse(response.toString()); } catch (Exception e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } if (connection != null) { //一定要关闭连接 connection.disconnect(); } } } }).start(); } private void showResponse(final String response) { /** * Android不允许在子线程中进行UI操作, * 我们需要通过runOnUiThread()方法将线程切换到主线程,再更新UI元素。 */ runOnUiThread(new Runnable() { @Override public void run() { // 在这里进行UI操作,将结果显示到界面上 responseText.setText(response); } }); }
使用OkHttp工具连接网络
添加依赖库,在app/build.gradle文件的dependencies库中添加:
compile ‘com.squareup.okhttp3:okhttp:3.4.1’
例子:
private void sendRequestWithOkHttp() { new Thread(new Runnable() { @Override public void run() { try { //第一步,先创建OkHttpClient实例 OkHttpClient client = new OkHttpClient(); //第二步,创建RequestBody保存要发送的数据 RequestBody requestBody = new FormBody.Builder() .add("username","admin") .add("password","123456") .build(); //第三步,创建要发送的request Request request = new Request.Builder() // 指定访问的服务器地址 .url("http://www.baidu.com") //传入数据 .post(requestBody) .build(); //第四部,发送请求并获取返回数据 Response response = client.newCall(request).execute(); //获取返回数据的内容 String responseData = response.body().string(); } catch (Exception e) { e.printStackTrace(); } } }).start();}
更多相关文章
- Android(安卓)权限列表permission说明
- Android(安卓)RecyclerView更新删除单条数据
- content provider 深入解析
- Android(安卓)-- Camera源码简析,启动流程
- android 开启关闭wifi服务
- Android(安卓)SQLITE 操作工具类
- Android(安卓)使用MediaPlayer播放音乐
- android 学习笔记4——post请求+线程控制
- Android中的HandlerThread和IntentService