【Android入门到项目实战-- 8.5】—— 使用HTTP协议访问网络的实践用法

news/2024/11/25 19:35:59/

目录

准备工作

 一、创建HttpUtil类

二、调用使用


        一个应用程序可能多次使用到网络功能,这样就会大量代码重复,通常情况下我们应该将这些通用的网络操作封装到一个类里,并提供一个静态方法,想要发送网络请求的时候,只需简单地调用这个方法即可。

下面使用OkHttp方法。

准备工作

首先在依赖库中添加以下:

implementation 'com.squareup.okhttp3:okhttp:3.4.1'

 一、创建HttpUtil类

        sendOkHttpRequest()方法中有一个okHttp3.Callback参数,这是OkHttp库中自带的一个回调接口,最终结果会回调到okhttp3.Callback中。

创建一个名字为HttpUtil的类,代码如下:

public class HttpUtil {public static void sendOkHttpRequest(final String address, final okhttp3.Callback callback) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(address).build();client.newCall(request).enqueue(callback);}
}

二、调用使用

修改activity_main.xml代码,如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent" ><Buttonandroid:id="@+id/send_request"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代码,如下:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {TextView responseText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button sendRequest = (Button) findViewById(R.id.send_request);responseText = (TextView) findViewById(R.id.response_text);sendRequest.setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.send_request) {sendRequestWithOkHttp();}}private void sendRequestWithOkHttp() {HttpUtil.sendOkHttpRequest("http://www.baidu.com", new okhttp3.Callback(){@Overridepublic void onFailure(Call call, IOException e) {
//                这里对异常处理}@Overridepublic void onResponse(Call call, Response response) throws IOException {
//                这里得到服务器返回的具体内容String responseData = response.body().string();showResponse(responseData);}});}private void showResponse(final String response) {runOnUiThread(new Runnable() {@Overridepublic void run() {// 在这里进行UI操作,将结果显示到界面上responseText.setText(response);}});}
}

最后不要忘记申请权限:

修改AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example.hotnews"><uses-permission android:name="android.permission.INTERNET" />................

效果如下:


http://www.ppmy.cn/news/61188.html

相关文章

一个人在家怎么赚钱?普通人如何通过网络实现在家就能赚钱

近年来&#xff0c;随着互联网的飞速发展&#xff0c;嗅觉敏锐的人只要使用互联网就可以快乐地赚钱。一般来说&#xff0c;网上赚钱的投资较少&#xff0c;有时有一台能上网的电脑或手机就够了&#xff0c;所以大家有时称其为“无成本或低成本网赚”。今天就分享一个人在家如何…

ZZULIOJ 1001-1099汇总

ZZULIOJ 1001-1099汇总 1001 整数ab 1002 简单多项式求值 1003 两个整数的四则运算 1004 三位数的数位分离 1005 整数幂 1006 求等差数列的和 1007 鸡兔同笼 1008 美元和人民币 1009 求平均分 1010 求圆的周长和面积 1011 圆柱体表面积 1012 求绝对值 1013 求两点…

【代码练习】旋转矩阵题解思路记录分析

题目 给你一幅由 N N 矩阵表示的图像&#xff0c;其中每个像素的大小为 4 字节。请你设计一种算法&#xff0c;将图像旋转 90 度。 不占用额外内存空间能否做到&#xff1f; 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵&#xff0c;使其变为: [ [7…

非静压模型SWASH学习(7)——自制算例Lock-Exchange

自制算例Lock-Exchange 算例简介模型配置网格及参数设置网格与地形初始条件与边界条件物理参数设置数值求解方法模型输出计算时间 模拟结果 SWASH是由Delft大学开发&#xff0c;用于模拟非静压条件下的水动力/波浪运动的数值模型。 与模型原理相关的内容详见以下论文&#xff1…

Linux C/C++ 程序内存泄露排查

C/C程序内存泄露排查 前言Linux系统内存泄露检查系统内存监控进程内存监控 进程内存泄露点定位已有的内存泄露检查工具制作一个内存泄露检查工具 前言 由于C/C程序可以动态申请内存&#xff0c;动态申请的内存位于程序的队区&#xff0c;如果程序比较复杂&#xff0c;程序员在…

Java学习报培训班好还是自学好?

学习本身就是一件艰苦的事情&#xff0c;如果你想从事Java开发的岗位&#xff0c;还不能确定是自学和报培训班&#xff0c;可以先看一看以下这份自学和报班的优劣势分析&#xff0c;或许能帮你们更好地选择&#xff1a; 1.自学 优势&#xff1a;①自由&#xff0c;想什么时间…

Python 绘制狄拉克 delta 函数(完美实现)

Python 绘制狄拉克 delta 函数 引言自制方法scipy 内置函数方法plt.scatter() 函数绘制完美绘制 delta 函数引言 阅读这篇文章前,推荐优先阅读74—Python绘制不同表现形式的狄拉克delta函数(视觉上的delta函数)。之前我们提到了我们所绘制的 delta 函数只是视觉上的 delta …

Q-in-Q 和 MAC-in-MAC

例题引入&#xff1a; 1. 城域以太网在各个用户以太网之间建立多点第二层连接&#xff0c;IEEE802.1ad定义运营商网桥协议提供的基本技术是在以太网帧中插入&#xff08;26&#xff09;字段&#xff0c;这种技术被称为&#xff08;27&#xff09;技术。 (26)A.运营商VLAN标记…