3.1 使用 HTTP 访问网络的两种方式详解

如何使用http协议访问服务器 在使用http访问远程服务器前我们要先了解重点访问的步骤 总的来说分为3点 1.建立TCP连接(三步握手协议) 第一次 第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自... 阅读详情

点此进入:从零快速构建APP系列目录导图
点此进入:UI编程系列目录导图
点此进入:四大组件系列目录导图
点此进入:数据网络和线程系列目录导图

对于 HTTP 协议,它的工作原理特别的简单,就是客户端向服务器发出一条HTTP 请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。一个浏览器的基本工作原理也就是如此了,比如说之前文章中使用到的 WebView 控件,其实也就是我们向百度的服务器发起了一条 HTTP 请求,接着服务器分析出我们想要访问的是百度的首页,于是会把该网页的 HTML 代码进行返回,然后 WebView 再调用手机浏览器的内核对返回的 HTML 代码进行解析,最终将页面展示出来。

简单来说, WebView 已经在后台帮我们处理好了发送 HTTP 请求、接收服务响应、解析返回数据,以及最终的页面展示这几步工作,不过由于它封装得实在是太好了,反而使得我们不能那么直观地看出 HTTP 协议到底是如何工作的。因此,接下来就让我们通过手动发送HTTP 请求的方式,来更加深入地理解一下这个过程。

本节例程下载地址:WillFlowHTTP

一、使用 HttpURLConnection

在 Android 上发送 HTTP 请求的方式一般有两种, HttpURLConnection 和 HttpClient,接下来我们先来学习一下 HttpURLConnection 的用法。首先需要获取到 HttpURLConnection 的实例,一般只需 new 出一个 URL 对象,并传入目标的网络地址,然后调用一下 openConnection() 方法即可,如下所示:

URL url = new URL("http://www.baidu.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();

得到了 HttpURLConnection 的实例之后,我们可以设置一下 HTTP 请求所使用的方法。常用的方法主要有两个:GET 和 POST。GET 表示希望从服务器那里获取数据,而 POST 则表示希望提交数据给服务器。写法如下:

connection.setRequestMethod("GET");

接下来就可以进行一些自由的定制了,比如设置连接超时、读取超时的毫秒数,以及服务器希望得到的一些消息头等。这部分内容根据自己的实际情况进行编写,示例写法如下:

connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);

之后再调用 getInputStream() 方法就可以获取到服务器返回的输入流了,剩下的任务就是对输入流进行读取,如下所示:

InputStream in = connection.getInputStream();

最后可以调用 disconnect()方法将这个 HTTP 连接关闭掉,如下所示:

connection.disconnect();

下面就让我们通过一个具体的例子来真正体验一下 HttpURLConnection 的用法。

首先修改 activity_main.xml 中的代码,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="com.wgh.willflowhttp.MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="发送请求"
        android:textColor="#fe4629"
        android:textSize="25dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.501"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.034" />


    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="495dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="20dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button"
        tools:ignore="MissingConstraints"
        app:layout_constraintHorizontal_bias="0.502">

        <TextView
            android:id="@+id/response"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textColor="#0894f9"
            tools:layout_editor_absoluteX="192dp"
            tools:layout_editor_absoluteY="226dp" />

    </ScrollView>

</android.support.constraint.ConstraintLayout>

这里我们使用了一个新的控件 ScrollView,由于手机屏幕的空间一般都比较小,有些时候过多的内容一屏是显示不下的,借助 ScrollView 控件的话就可以允许我们以滚动的形式查看屏幕外的那部分内容。另外,布局中还放置了一个 Button 和一个 TextView, Button 用于发送 HTTP 请求,TextView 用于将服务器返回的数据显示出来。

接着修改 MainActivity 中的代码,如下所示:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private static final int SHOW_RESPONSE = 0;
    private Button mButton;
    private TextView mTextView;

    private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SHOW_RESPONSE:
                    String response = (String) msg.obj;
                    // 在这里进行UI操作,将结果显示到界面上
                    mTextView.setText(response);
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView() {
        mButton = (Button) findViewById(R.id.button);
        mTextView = (TextView) findViewById(R.id.response);

        mButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
                sendRequestWithHttpURLConnection();
                break;
        }
    }

    private void sendRequestWithHttpURLConnection() {
        // 开启线程来发起网络请求
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection httpURLConnection = null;
                try {
                    URL url = new URL("https://www.baidu.com");
                    httpURLConnection = (HttpURLConnection) url.openConnection();
                    httpURLConnection.setRequestMethod("GET");
                    httpURLConnection.setConnectTimeout(6666);
                    httpURLConnection.setReadTimeout(6666);
                    InputStream inputStream = httpURLConnection.getInputStream();
                    // 下面对获取到的输入流进行读取
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                    StringBuilder response = new StringBuilder();
                    String readLine;
                    while ((readLine = bufferedReader.readLine()) != null) {
                        response.append(readLine);
                    }
                    Message message = new Message();
                    message.what = SHOW_RESPONSE;
                    // 将服务器返回的结果存放到Message中
                    message.obj = response.toString();
                    mHandler.sendMessage(message);
                    Log.i("MainActivity","response : " + response.toString());
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (httpURLConnection != null) {
                        httpURLConnection.disconnect();
                    }
                }
            }
        }).start();
    }
}

我们在发送请求按钮的点击事件里调用了 sendRequestWithHttpURLConnection() 方法,在这个方法中先是开启了一个子线程,然后在子线程里使用 HttpURLConnection 发出一条 HTTP 请求,请求的目标地址就是百度的首页。接着利用 BufferedReader 对服务器返回的流进行读取,并将结果存放到了一个 Message 对象中。这里为什么要使用 Message 对象呢?当然是因为子线程中无法对 UI 进行操作了。我们希望可以将服务器返回的内容显示到界面上,所以就创建了一个 Message 对象,并使用 Handler 将它发送出去。之后又在 Handler 的 handleMessage() 方法中对这条 Message 进行处理,最终取出结果并设置到 TextView 上。

最后别忘了要声明一下网络权限:
<uses-permission android:name="android.permission.INTERNET" />
编译运行看效果:

看着可能有点乱,但服务器返回给我们的就是这种 HTML 代码,只是通常情况下浏览器都会将这些代码解析成漂亮的网页后再展示出来,我们这里只做了最原始的展示。

那么如果是想要提交数据给服务器应该怎么办呢?只需要将 HTTP 请求的方法改成 POST,并在获取输入流之前把要提交的数据写出即可。注意每条数据都要以键值对的形式存在,数据与数据之间用&符号隔开,比如说我们想要向服务器提交用户名和密码,就可以这样写:

connection.setRequestMethod("POST");
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes("username=wgh&password=123456");

下面我们来学习一下HttpClient 的用法。

二、使用 HttpClient

HttpClient 是 Apache 提供的 HTTP 网络访问接口,从一开始的时候就被引入到了 Android API 中。它可以完成和 HttpURLConnection 几乎一模一样的效果,但两者之间的用法却有较大的差别,那么我们接下来看一下 HttpClient 是如何使用的。

首先你需要知道, HttpClient 是一个接口,因此无法创建它的实例,通常情况下都会创建一个 DefaultHttpClient 的实例,如下所示:

HttpClient httpClient = new DefaultHttpClient();

接下来如果想要发起一条 GET 请求,就可以创建一个 HttpGet 对象,并传入目标的网络地址,然后调用 HttpClient 的 execute()方法即可:

HttpGet httpGet = new HttpGet("https://www.baidu.com");
httpClient.execute(httpGet);

如果是发起一条 POST 请求会比 GET 稍微复杂一点,我们需要创建一个 HttpPost 对象,并传入目标的网络地址,如下所示:

HttpPost httpPost = new HttpPost("https://www.baidu.com");

然后通过一个 NameValuePair 集合来存放待提交的参数,并将这个参数集合传入到一个 UrlEncodedFormEntity 中,然后调用 HttpPost 的 setEntity()方法将构建好的 UrlEncodedFormEntity 传入,如下所示:

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", "wgh"));
params.add(new BasicNameValuePair("password", "123456"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");
httpPost.setEntity(entity);

接下来的操作就和 HttpGet 一样了,调用 HttpClient 的 execute() 方法,并将 HttpPost 对象传入即可:

httpClient.execute(httpPost);

执行 execute() 方法之后会返回一个 HttpResponse 对象,服务器所返回的所有信息就会包含在这里面。通常情况下我们都会先取出服务器返回的状态码,如果等于 200 就说明请求和响应都成功了,如下所示:

if (httpResponse.getStatusLine().getStatusCode() == 200) {
      // 请求和响应都成功了
}

接下来在这个 if 判断的内部取出服务返回的具体内容,可以调用 getEntity() 方法获取到一个 HttpEntity 实例,然后再用 EntityUtils.toString() 这个静态方法将 HttpEntity 转换成字符串即可,如下所示:

HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity);

注意如果服务器返回的数据是带有中文的,直接调用 EntityUtils.toString() 方法进行转换会有乱码的情况出现,这个时候只需要在转换的时候将字符集指定成 utf-8 就可以了,如下所示:

String response = EntityUtils.toString(entity, "utf-8");

基本的用法就是如此,接下来就让我们把刚才的项目改用 HttpClient 的方式再实现一遍。

直接修改 MainActivity 中的代码,如下所示:
    private void sendRequestWithHttpClient() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpGet httpGet = new HttpGet("https://www.baidu.com");
                    HttpResponse httpResponse = httpClient.execute(httpGet);
                    if (httpResponse.getStatusLine().getStatusCode() == 200) {
                        // 请求和响应都成功了
                        HttpEntity entity = httpResponse.getEntity();
                        String response = EntityUtils.toString(entity, "utf-8");
                        Message message = new Message();
                        message.what = SHOW_RESPONSE;
                        // 将服务器返回的结果存放到Message中
                        message.obj = response.toString();
                        mHandler.sendMessage(message);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

这里我们并没有做太多的改动,只是添加了一个 sendRequestWithHttpClient() 方法,并在发送请求按钮的点击事件里去调用这个方法。在这个方法中同样还是先开启了一个子线程,然后在子线程里使用 HttpClient 发出一条 HTTP 请求,请求的目标地址还是百度的首页,HttpClient 的用法也正如前面所介绍的一样。然后为了能让结果在界面上显示出来,这里仍然是将服务器返回的数据存放到了 Message 对象中,并用 Handler 将 Message 发送出去。

我们可以重新运行一下程序了,然后点击发送请求按钮后,然后我们会看到和上面同样的运行结果,由此证明,使用 HttpClient 来发送 HTTP 请求的功能也已经成功实现了。

点此进入:GitHub开源项目“爱阅”,下面是“爱阅”的效果图:


联系方式:

简书:WillFlow
优快云:WillFlow
微信公众号:WillFlow

微信公众号:WillFlow

HTTP访问流程分析 http协议,每天都要接触的一个协议。 也叫超文本传输协议,http协议就是万维网的传输机制,允许浏览器通过Web服务器来浏览网页,同时http也是web最核心的内容,它是web服务器和客户端之间进行数据传输的规则。web也就是网站是信息内容发布者,而最常见的客户端就是浏览器,用于接收web服务器发送的信息。 http遵循的是请求与应答的模型,客户端向服务器发送请求,服务器处理请求并且返回适当的应... 阅读详情

相关推荐

Android MediaPlayer使用之网络访问异常

Android MediaPlayer使用之网络访问异常 1.问题描述 2019-04-02 21:26:15.552 22138-22138/com.uyeh.mediaplayertest D/MainActivity: onClick: play 2019-04-02 21:26:15.568 22138-22138/com.uyeh.mediaplayertest V/MediaHTTP...

qimi123456的专栏 7448

计算机网络——HTTP网络访问全流程

当你在浏览器中访问某一个网址时候,背后的经历那些流程?本博文主要来详细的介绍的网络访问的全部流程中涉及到计算机网络的相关知识。帮助大家很好的理解和学习计算机。

庄小焱 7076

Android 三种常用网络访问方式HttpURLConnection、Volley和okhttp3

三种方法的差异 HttpURLConnection、和okhttp3是Android最常用的三种网络方式,其主要差别是: 1、HttpURLConnection为同步的方式,Volley只支持异步的方法,而okhttp3同时支持同步和异步的方法。 2、HttpURLConnection与Volley不支持WebSocket,而okhttp3是支持的。 同步的网络访问方式不能在主线程中使用,必须通过...

dingpwen的博客 1424

一次完整的http访问过程

一次完整的http访问过程

a rookie的博客 1930

CPU也能跑大模型?手把手教你用vLLM离线部署Qwen2.5-7B-Instruct(附性能优化技巧)

本文详细介绍了如何在CPU服务器上高效部署Qwen2.5-7B-Instruct模型,通过vLLM框架和一系列优化技巧实现离线推理。内容包括环境配置、模型加载优化、性能调优及生产环境部署方案,帮助开发者在资源有限的情况下也能运行大语言模型。

weixin_28691741的博客 490

新手自己动手设置3D-slicer中文版(超详细图文)

3DSlicer是一个开源的免费软件,用于医学图像分析(包括配准和交互式分割)和可视化(包括3D渲染)以及用于图像引导治疗研究的软件平台。复制qm文件,粘贴于3D-slicer文件相关文件夹内,\bin\translations\。打开3dslicer,edit菜单下Application Settings,支持的操作系统:Linux,Mac OSX和Windows。本人英语太差,所以第一反应就是中文版,官网无中文版下载,下载后不能直接使用,必须要发布成qm文件;qm文件已经生成,位于ts文件同一文件夹。

linjianping513的博客 9847

HTTP协议

HTTP(Hyper Text Transfer Protocol)协议又被称为做超文本传输协议,是一种简单的请求-响应协议,HTTP通常运行在TCP之上在编写网络通信代码时,可以自行进行协议的定制,但实际有很多优秀的工程师早就已经写出了许多非常成熟的应用层协议,其中最典型的就是HTTP协议。

GG_Bruse的博客 740

物理机centos7系统重启后直接进入dracut

Warning: /dev/centos/root does not exist Warning: /dev/mapper/centos-root does not exist 在shell命令行执行以下: dracut:/# lvm vgscan dracut:/# lvm vgchange -ay dracut:/# exit 之后可以正常进入系统(测试正常)。 但是重启之后依然会进入dracut模式,永久解决如下: 查看kernel文件 [root@ecs ~]# ls -ltrh /boot

魏志标的博客 1万+

HTTP及其版本(HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0)详解

目录HTTP协议基础知识Http版本Http1.0Http1.1Http2.0 HTTP协议 基础知识 HTTP协议是超文本传输协议的缩写,是用于从万维网传输超文本到浏览器的传输协议。 HTTP基于TCP/IP通信协议来传递数据(HTML文件,图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。 1、特点: (1)无连接:无连接是指限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。这种方式可以节省传输时间。

星河梦~的博客 2万+

【ROS2】Arduino系列之机器人底盘实现

介绍ros中提供的一个已经封装了的模块: ros_arduino_bridge,该模块由下位机驱动和上位机控制两部分组成,通过该模块可以更为快捷、方便的实现自己的机器人平台

guilin 1484

Openclaw第3章:进阶部署

本章面向需要在特定环境中稳定运行 OpenClaw 的用户,介绍 Windows、Linux、Docker 以及 Cloudflare Workers 四种进阶部署方式。每种方式各有侧重:Windows 部署适合桌面用户日常使用,Linux 部署适合开发者,Docker 部署适合追求环境隔离的运维场景,Cloudflare Workers 部署则适合希望获得全球边缘网络加速的用户。读者可根据自身环境和需求选择合适的方案,完成本章后可继续阅读第4章了解维护升级流程。

Maynor的博客 1295

Android HTTP访问的两种方式(HttpClient和HttpURLConnection)

Android HTTP访问的两种方式(HttpClient和HttpURLConnection)

Crazy程序猿 5405

在 SAP BTP 中玩转工厂日历 Maintain Factory Calendars 实战指南

工厂日历是企业关键的时间主数据,基于国家假日历定义工作日与非工作日,广泛应用于生产计划、采购交期、财务结账等业务场景。SAP系统通过三类应用(维护节假日、假日历和工厂日历)实现分层配置。工厂日历作为顶层配置,支持工作日模式设定和例外规则添加。在多系统架构中,工厂日历可通过集成场景同步,确保数据一致性。应用支持创建、编辑和查看功能,包含有效期设置、例外规则管理和多语言文本维护。合理设置工厂日历对业务运营至关重要,需注意命名规范和有效期选择,避免历史数据问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 222

Android中基于HTTP协议的网络访问的两种方式

Android中基于HTTP协议的网络访问的两种方式: 1)HttpClient (apche开发) 2)HttpURLConnection (google在发布安卓时在Java基础上修改得到的)使用HC(HttpClient)/UC(HttpURLConnection)进行网络访问的基本步骤: 1.申请权限(INTERNET访问权限) 2.任何网络访问的相关代码,必须在工作线程中执行

kang995066277的博客 520

2025华为OD面试手撕代码真题目录、八股文真题目录以及面试技巧

1. **华为OD面试技术面准备指南** 2. **华为OD面试技术面常见问题解答** 3. **华为OD面试技术面经验分享** 4. **华为OD面试技术面注意事项** 5. **华为OD面试技术面攻略** 6. **华为OD面试技术面模拟题目与解析** 7. **华为OD面试技术面知识点梳理** 8. **华为OD面试技术面常考**

算法大师! 3万+

声音源定位:利用YOLO与麦克风阵列定位声音来源YOLOv5、YOLOv8、YOLOv10

YOLO(You Only Look Once)是一个用于目标检测的深度学习模型。YOLO的最大特点是其通过一次前向传播即可完成多个目标的检测,速度和精度相对其他目标检测算法具有显著优势。YOLO模型的版本不断更新,从YOLOv1到YOLOv10,算法精度和速度都有了显著的提升。声音源定位是利用多个麦克风阵列收集的声音信号,通过算法计算声音源的位置。声音源定位的关键在于准确估计每个麦克风的声音到达时间,从而确定声音源的空间坐标。基于时延估计(TDOA)

YOLO 673

android开发,使用kotlin学习HTTP访问网络

HTTP是一种请求/响应模式的协议,当客户端与在服务器建立连接后,向服务器发送请求,称为HTTP请求,服务器收到请求后会做出响应,称为HTTP响应,使用httpURLConnection访问网络,使用OkHttp访问网络

weixin_63357306的博客 2260

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用 HTTP 协议访问网络的两种方式:HttpURLConnection 和 HttpClient

安卓中进行基于HTTP协议的网络访问说明: HttpClient (apache开发) HttpURLConnection(google在发布安卓时在Java基础上修改得到的) 使用HC(HttpClient)/UC(HttpURLConnection)进行网络访问的基本步骤: 0.申请权限 INTERNET访问权限 1. 任何网络访问的相关代码,必须在工作线程中执行!

Android_Soaring的博客 3312

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

安卓中进行基于HTTP协议的网络访问的两种方式

安卓中进行http协议的网络访问有两种方式: 1.HttpClient (它由apache开发) 2.HttpURLConnection(google在发布安卓时在Java基础上修改得到的) 使用HC(HttpClient)/UC(HttpURLConnection)进行网络访问的基本步骤: 0. 申请权限 INTERNET访问权限 1. 任何网络访问的相关代码,必须在工作线程中执行! 2.

Ritai_Lee的博客 1030

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

一文说清楚Http1到Http2到Http3的优化

但是,对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求 - 响应」的数据都缓存在本地,那么下次就直接读取本地的数据,不必在通过网络获取服务器的响应了,这样的话 HTTP/1.1 的性能肯定肉眼可见的提升。

LUCIAZZZ的博客 1379

【网络】HTTP协议详解

哟,大家好,我是白晨。距离上一次更新已经过了一段时间了,属实是当鸽子当惯了🤣。上一篇文章我们全面讲解了网络中的基础知识(没看过上篇文章的的可以先去看上一篇文章【网络】网络基础知识详解),这篇文章白晨准备从应用层中的一个及其重要的协议开始讲起,它就是——HTTP协议。HTTP协议由于简单、快速而成为了应用最广泛的web文档传递协议协议,在理解了HTTP协议的种种行为后,再自顶向下去学习传输层,网络层以及数据链路层将会好理解许多。1989 年 3 月,HTTP 诞生。

白晨的博客 1万+

Flutter Http网络请求详解

Http网络请求详解1. Http的请求方式简介1.1 GET请求方式1.2 POST请求方式1.3 HEAD请求方式1.4 PUT请求方式1.5 DELETE请求方式1.6 OPTIONS请求方式1.7 TRACE请求方式1.8 CONNECT请求方式2. Flutter Http网络请求实现的区别和特点 Http网络请求是一门开发语言里比较常用和重要的功能,主要用于资源访问、接口数据请求和提...

持续学习中 1万+

HarmonyOS使用HTTP访问网络

HTTP即超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。HTTP的工作原理正如上图所示,客户端向服务端发出一条HTTP数据请求,服务端接收请求后向客户端返回一些数据,然后客户端再对这些数据进行解析和处理。

2301_81624474的博客 1940

HTTP1.0、HTTP1.1 、HTTP2.0和HTTP3.0 的区别【面试题】

HTTP1.0、HTTP1.1 和 HTTP2.0 的区别【面试题】

CBeann的博客 2611

关于HTTP、HTTPS、HTTP1.1、HTTP2.0、HTTP3.0的介绍及区别

HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的www文件都必须遵循这个标准。设计初衷是为了提供一种发布和接收HTML页面的方法。

weixin_61164359的博客 4387

HTTP详解

HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。 HTTP的名字「超文本协议传输」,它可以拆成三个部分: 1xx 类状态码属于提示信息,是协议处理中的一种中间状态,实际用到的比较少。2xx 类状态码表示服务器成功处理了客户端的请求,也是我们最愿意看到的状态。「200 OK」是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。「204 No Content」也是常见的成功状态码,与 200 OK 基本相同,但响应头没

mz474920631的博客 2万+
上一篇: 2.2 SQLite数据库的增删改查和事务
下一篇: 3.2 使用 URL 类请求和提交数据详解
WillFlow
博客等级 码龄11年 61粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值