Android开发入门之网络通信(网页源码查看器)

2024-06-03 05:38

本文主要是介绍Android开发入门之网络通信(网页源码查看器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一步:新建一个Android工程命名为htmlViewer目录结构如下图:


第二步:修改activity_main.xml布局文件代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/htmlPath" /><EditTextandroid:id="@+id/et_path"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/path" /><Buttonandroid:id="@+id/btn_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/view" /><ScrollViewandroid:layout_width="wrap_content"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/tv_code_view"android:layout_width="match_parent"android:layout_height="wrap_content" /></ScrollView></LinearLayout>

strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">网页源码查看器</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string><string name="htmlPath">网页地址</string><string name="view">查看</string><string name="success">获取源码成功!</string><string name="fail">获取源码失败!</string><string name="path">http://www.so.com</string></resources>

第三步:编写MianActivity类:

package cn.leigo.htmlviewer;import java.io.IOException;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import cn.leigo.service.CodeService;public class MainActivity extends Activity implements OnClickListener {private EditText mHtmlPathEditText;private Button mViewButton;private TextView mCodeViewTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mHtmlPathEditText = (EditText) findViewById(R.id.et_path);mViewButton = (Button) findViewById(R.id.btn_view);mCodeViewTextView = (TextView) findViewById(R.id.tv_code_view);mViewButton.setOnClickListener(this);}@Overridepublic void onClick(View v) {String path = mHtmlPathEditText.getText().toString();String code;try {code = CodeService.getHtml(path);mCodeViewTextView.setText(code);Toast.makeText(this, R.string.success, Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();Toast.makeText(this, R.string.fail, Toast.LENGTH_SHORT).show();}}
}

业务类CodeService:

package cn.leigo.service;import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;import javax.net.ssl.HttpsURLConnection;import cn.leigo.utils.StreamTool;public class CodeService {/*** 获取网页HTML源代码* * @param path*            网页路径* @return* @throws IOException*/public static String getHtml(String path) throws IOException {String code = "";URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5000);conn.setRequestMethod("GET");if (conn.getResponseCode() == HttpsURLConnection.HTTP_OK) {InputStream inputStream = conn.getInputStream();byte[] data = StreamTool.read(inputStream);code = new String(data, "UTF-8");}return code;}}

工具类StreamTool:

package cn.leigo.utils;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;public class StreamTool {/*** 读取流中的数据* * @param inputStream* @return* @throws IOException*/public static byte[] read(InputStream inputStream) throws IOException {ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = inputStream.read(buffer)) != -1) {baos.write(buffer, 0, len);}inputStream.close();return baos.toByteArray();}}

最后别忘了在AndroidManifest.xml文件中添加权限:

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

运行上述工程查看效果图:


这篇关于Android开发入门之网络通信(网页源码查看器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026138

相关文章

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin