首页 > 其他分享 >Android 使用网络技术

Android 使用网络技术

时间:2022-11-20 10:35:03浏览次数:43  
标签:null res 网络 技术 connection reader new Android 解析

Android 使用网络技术

使用

<!-- 在布局文件中增加 -->
<WebView
    android:id="@+id/web_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
//修改主活动类
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView webView = findViewById(R.id.web_view);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://www.baidu.com");//注意这里使用是https,不然加载不出来
    }
}

使用HttpURLConnection

这里会使用到一个新的控件ScrollView
它可以以滚动的形式查看屏幕外的那部分内容
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/response_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</ScrollView>
核心代码逻辑是开启线程发送网络请求
将返回的报文数据,显示在ScrollView的TextView中
private void sendRequest() {
    //开线程发起网络请求
    new Thread(() -> {
        HttpURLConnection connection = null;
        BufferedReader reader = null;
        try {
            URL url = new URL("https://www.baidu.com");
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(8000);
            connection.setReadTimeout(8000);
            InputStream in = connection.getInputStream();
            //获取到的输入流进行读取
            reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder res = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                res.append(line);
            }
            showRes(res.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 showRes(final String res) {
    runOnUiThread(() -> resText.setText(res));
}

img

使用OkHttp

//在build.gradle依赖中添加

implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10'
//主活动修改

 findViewById(R.id.send_request).setOnClickListener(v -> {
            if (v.getId() == R.id.send_request) {
                sendOkRequest();
            }
        });


private void sendOkRequest() {
    new Thread(() -> {
        try {
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder().url("https://www.baidu.com").build();
            Response response = client.newCall(request).execute();
            showRes(response.body().string());
        } catch (Exception e) {
            e.printStackTrace();
        }


    }).start();
}

XML解析

1.pull解析

parseXMLWithPull(responseData);
先获取到一个XmlParserFactory的实例,借助这个实例得到XmlPullParser对象,然后调用XmlPullParser的setInput()方法将返回的XML数据设置进去就开始解析了。
解析的过程:通过getEventType()可以得到当前的解析事件,然后在一个while循环中不断进行解析,如果当前的解析事件不等于XmlPullParser.END_DOCUMENT
说明解析还没有完成,调用next()方法后获取下一个解析事件

2.SAX解析

标签:null,res,网络,技术,connection,reader,new,Android,解析
From: https://www.cnblogs.com/zybao/p/16907963.html

相关文章

  • 锐捷网络交换机配置命令大全
    基本命令Enable进入特权模式#Exit返回上一级操作模式#End返回到特权模式#writememory或copyrunning-configstartup-config保存配置文件#delflash:config.te......
  • 计算机网络:广域网的基本概念
    广域网通常是指覆盖范围很广(远超一个城市的范围)的长距离网络。广域网是因特网的核心部分,其任务是长距离运送主机所发送的数据。连接广域网各结点交换机的链路都是高速链路,它......
  • unix网络编程2.2——高并发服务器(二)多进程与多线程实现
    目录前置文章unix网络编程1.1——TCP协议详解(一):https://www.cnblogs.com/kongweisi/p/16882787.htmlunix网络编程2.1——高并发服务器(一)基础——io与文件描述符、socket编......
  • JDBC核心技术
    第1章:JDBC概述1.1数据的持久化持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存......
  • Android 利用和风天气API显示实时天气
    最近开发遇到了这样的需求,需要在APP中显示出实时天气等信息,可以利用和风天气提供的API,免费订阅可以使用一定数量的查询额度,不过也差不多够用了。进入和风天气官网,注册。......
  • unix网络编程1.1——TCP协议详解(一)
    目录前言网络7层协议与4层协议TCP/IP四层模型通信过程TCP与UDP的区别:TCP:UDP:CS模型-TCP总览数据进入协议栈时的封装过程TCP数据格式TCP三次握手通信时序图TCP四次挥手半关......
  • eclipse android快速搭建开发环境
    1.下载eclipse3.5以及以上ide和javaee工具​​​http://java.sun.com/javase/downloads/index.jsp​​​2下载AndroidSDK3.在eclipse下......
  • 遥控pc android应用程序
    遥控pcandroid应用程序 通过手机来控制您的电脑,在家里比如床上看电影,手机控制不用去直接操作电脑,多方便呀,呵呵。 分pc服务端程序,以及移动app应用程序。  1首先下载j......
  • android 一键锁屏
    android一键锁屏从操作上看,如果我们想锁屏休眠需要按手机上固定的按钮,现在通过桌面应用,只要将此应用图标放到桌面上点击一下即可锁屏休眠。从体......
  • Kubernetes(k8s)CNI(Calico)网络模型原理
    目录一、概述二、Calico架构和核心组件三、什么是BGP?三、Calico两种网络模式1)IPIP模式2)BGP模式四、安装Calico插件1)通过helm安装Calico2)通过yaml文件安装3)k8sflannel......