使用WebView

WebView可以让在应用程序中展示一些网页,加载和显示网页都是浏览器的任务,但是需求又有明确指出,不允许打开系统的浏览器。所以WebView就是能帮助我们在页面中显示一个网页

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><WebViewandroid:id="@+id/webView"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);WebView webView = findViewById(R.id.webView);webView.getSettings().setJavaScriptEnabled(true);webView.setWebViewClient(new WebViewClient());webView.loadUrl("https://www.baidu.com");}
}

上面在活动中注册了WebView控件,要在Android中使用网络技术是需要在AndroidManifest.xml中注册的

<uses-permission android:name="android.permission.INTERNET"/>

使用HTTP访问网络

1 使用HttpURLConnection

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/send_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Send Request"/><ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/response_text"android:layout_width="match_parent"android:layout_height="wrap_content" /></ScrollView></LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {private TextView tx;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tx = findViewById(R.id.response_text);Button btnSend = findViewById(R.id.send_btn);btnSend.setOnClickListener((View v) -> {new Thread(() -> {URL url = null;HttpURLConnection httpURLConnection = null;BufferedReader reader = null;try {url = new URL("https://www.baidu.com");httpURLConnection = (HttpURLConnection)url.openConnection();httpURLConnection.setRequestMethod("GET");httpURLConnection.setConnectTimeout(8000);httpURLConnection.setReadTimeout(8000);InputStream inputStream = httpURLConnection.getInputStream();reader = new BufferedReader(new InputStreamReader(inputStream));StringBuffer sb = new StringBuffer();String line = "";while ((line = reader.readLine()) != null){sb.append(line);}Log.e("MainActivity", sb.toString());showResponse(sb.toString());} catch (Exception e) {e.printStackTrace();}finally {if(reader != null){try {reader.close();} catch (IOException e) {e.printStackTrace();}}if(httpURLConnection != null){httpURLConnection.disconnect();}}}).start();} );}private void showResponse(final String s) {runOnUiThread(() -> {tx.setText(s);});}
}

2. 使用OkHttp

public class MainActivity extends AppCompatActivity {private TextView tx;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tx = findViewById(R.id.response_text);Button btnSend = findViewById(R.id.send_btn);btnSend.setOnClickListener((View v) -> {new Thread(() -> {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url("https://www.baidu.com").build();Response response = null;try {response = client.newCall(request).execute();String responseBody = response.body().string();showResponse(responseBody);} catch (IOException e) {e.printStackTrace();}}).start();} );}private void showResponse(final String s) {runOnUiThread(() -> {tx.setText(s);});}
}

Java后端学Android(13)-使用网络技术相关推荐

  1. androidframework层面试题,有java基础学android

    前言 去年11月份因为家里出了一些事情,从老东家辞职,在家待了一段时间.本想着年后再出来找工作,但是"梦想是美好的现实是残酷的"年底爆发了疫情,直接把我的计划打乱了,直到3月中旬才 ...

  2. 记入职一个星期(Java后端转Android游戏开发)

    转眼已经入职一个星期了,时间过得真快,这周也还是处于学习阶段,从一直接触的后台管理开发跳到没接触过的Android,内心有点迷茫与慌张,毕竟没有接触过,不过接触之后发现Java代码居多,还是写逻辑,A ...

  3. 即时通讯源码,包含安卓,iOS,H5,MacOS,PC,Java后端

    即时通讯源码,包含安卓,iOS,H5,MacOS,PC,Java后端 YID:391000625261646335酷柒网络技术有限公司

  4. 我想打老板,作为Java后端程序员,他让我开发电商微信小程序

    大家好,我是曹NM,我是一名Java后端程序员,每天开心的撸CRUD: 然后,今天突变- 今天早上老板把我叫到办公室,对我说,"公司最近接了个电商小程序单子,你和王二狗,张SD参与下需求分析 ...

  5. 找工作选大数据方向还是选择java后端方向?

    找工作选大数据方向还是选择java后端方向? 求职网搜索 大数据 java后端 知乎建议 哔哩哔哩建议 1 2 求职网搜索 大数据 薪资普遍高,技术点 就算是做大数据,java也要相对成熟 java后 ...

  6. 前端和Java后端分别需要学哪些技术?

    相信很多人也和我一样,只知道自己学过java语言,但是还没有确定自己在未来工作中是向前端发展还是向后端发展.如果你是在校学生,当你学完了java课程后并不意味着java的学习就结束了,这仅仅只是意味着 ...

  7. java后端开发所学的技术有哪些?

    学习目标: 了解java后端开发工程师所具备的最基础的技术 学习内容: 熟悉java语言.了解J2EE体系结构.熟悉相关软件开发工具 了解IO.多线程.集合.通信传输.数据库访问.JVM 了解serv ...

  8. Android工程师转型Java后端开发之路,自己选的路,跪着也要走下去!

    本文是公众号读者jianfeng投稿的面试经验 恭喜该同学成功转型 目录: 毅然转型,没头苍蝇 制定目标,系统学习 面试经历 毅然转岗,没头苍蝇 首先,介绍一下我的背景.本人坐标广州,2016年毕业于 ...

  9. Java后端开发需具备什么技术?这几个部分你需要关注

    Java后端开发需具备什么技术?对于初学Java并且有志于后端开发的同学来说,需要重点关注以下几个部分: Java开发普遍需要: 1.Java基础 2.数据库 MYSQL/SQLServer/Orac ...

最新文章

  1. 数据源 No operations allowed after connection closed
  2. 那个写同龄人正在抛弃你的作者,道理都懂,怎么你还是loser
  3. 阿里面试 Java 都问什么?万字总结!
  4. TF之CNN:利用sklearn(自带手写数字图片识别数据集)使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线
  5. json支持的最大长度_Swifter.Json 可能是 .Net 平台迄今为止性能最佳的 Json 序列化库【开源】...
  6. Mongo数据库搭建
  7. 前端学习(680):switch注意事项
  8. 特征工程自动化如何为机器学习带来重大变化
  9. window+Apache 配置虚拟主机(2)
  10. LeetCode 59. 螺旋矩阵 II(python、c++)
  11. django连接mysql自动同步生成数据表
  12. Hibernate常用配置
  13. Oracle SQL 基础要点
  14. 第一章:计算机的软硬件基本结构_4
  15. ddms java 截图_从Android设备获取实时截屏
  16. JAVA和Python HmacSHA1 算法计算API签名的实现
  17. 基于行为识别和视频分类的算法
  18. 「工具推荐」2019最实用的10大免费工具,你值得拥有
  19. 计算机科学和统计专业排名,2021统计学专业大学排名 哪个学校最好
  20. 高清兼顾低码的视频流传输是如何获得的?

热门文章

  1. 中断优先级和中断线程优先级
  2. 制造业ERP系统如何管理生产工序?具体流程有哪些?
  3. 怎么用python做战斗机_少儿编程分享:手把手教你用Python编写战斗机游戏(四)
  4. 【AI世界杯15强决战】中美英日德法印等15国战略大曝光
  5. 嵌入式Linux配置内核后编译过程中报未定义引用错误的解决
  6. Servlet转发和重定向的异同
  7. Qt Quick实现九宫格划指锁屏视图
  8. 4- word 从任意页面插入页码,前面页面不要页码,以及页码处的横线问题
  9. CAS单点登录学习笔记二之部署CAS Server
  10. 恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记4——ADC