【鸿蒙HarmonyOS】网络请求http代码实现

在网络开发中,HTTP请求是必不可少的一部分。在鸿蒙(HarmonyOS)开发中,同样需要处理网络请求,无论是与后端服务器交互还是获取外部API的数据。下面是对鸿蒙开发中涉及到的HTTP模块——http模块,以及一个常用的第三方库——axios模块的总结。

HTTP协议概述

1. 基本概念
  • 请求(Request):客户端向服务器发送的消息。
  • 响应(Response):服务器接收到请求后返回给客户端的消息。
  • 消息格式:HTTP消息由报文头(Header)、状态行(Status Line)和可选的实体主体(Entity Body)组成。
2. 请求报文结构
  • 请求行:包含请求方法、请求URI和协议版本。
    GET /index.html HTTP/1.1
    
  • 请求头:包含客户端的信息,如Accept-Language、User-Agent等。
    Accept-Language: zh-CN,zh;q=0.9
    User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
    
  • 实体主体:可选部分,包含请求的具体内容,如表单数据或文件上传。
    username=admin&password=123456
    
3. 响应报文结构
  • 状态行:包含HTTP版本、状态码及状态描述。
    HTTP/1.1 200 OK
    
  • 响应头:包含服务器的信息,如Content-Type、Date等。
    Content-Type: text/html; charset=UTF-8
    Date: Thu, 01 Jan 2023 12:00:00 GMT
    
  • 实体主体:可选部分,包含响应的具体内容,如HTML文档。
4. 请求方法
  • GET:请求指定的资源。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者注册用户)。
  • PUT:替换目标资源。
  • DELETE:删除指定资源。
  • HEAD:类似于GET请求,但只返回头部信息。
  • OPTIONS:查询目标资源的通信选项。
  • PATCH:对资源进行部分更新。
5. 状态码
  • 1xx(信息响应类):指示请求已被接受,需要进一步处理。
  • 2xx(成功响应类):请求已成功被服务器接收、理解,并接受。
    • 200 OK:成功。
    • 201 Created:创建成功。
  • 3xx(重定向类):需要客户端采取进一步的操作来完成请求。
    • 301 Moved Permanently:永久重定向。
    • 302 Found:临时重定向。
  • 4xx(客户端错误类):请求中有错误,或请求无法被服务器理解。
    • 400 Bad Request:请求无效。
    • 401 Unauthorized:未经授权。
    • 403 Forbidden:禁止访问。
    • 404 Not Found:找不到资源。
  • 5xx(服务器错误类):服务器在处理请求的过程中发生了错误。
    • 500 Internal Server Error:内部服务器错误。
    • 503 Service Unavailable:服务不可用。

HTTP的工作原理

  1. 建立连接:客户端与服务器之间建立TCP连接。
  2. 发送请求:客户端发送HTTP请求到服务器。
  3. 处理请求:服务器接收请求,处理请求内容。
  4. 发送响应:服务器根据处理结果构建响应,并发送给客户端。
  5. 关闭连接:完成响应后,默认情况下会关闭连接(HTTP/1.0),或者保持连接开放以供后续请求使用(HTTP/1.1及以上版本)。

HTTP与HTTPS的区别

  • 安全性:HTTPS是在HTTP的基础上加入了SSL/TLS协议,用于加密传输的数据,增强安全性。
  • 端口号:HTTP默认端口为80,HTTPS默认端口为443。
  • 证书:HTTPS需要服务器端有数字证书支持,确保数据的完整性和机密性。

通过以上概述,你应该对HTTP协议有了更深入的理解。在实际开发中,根据不同的场景选择合适的请求方法和状态码,对于构建健壮的网络应用程序至关重要。

HarmonyOS HTTP模块

官方文档传送门

1. 概述

HarmonyOS提供了内置的http模块来实现HTTP请求。此模块允许开发者以异步的方式发起HTTP请求,支持GET、POST等多种HTTP方法。

基本用法

1. 导入
import { http } from '@kit.NetworkKit'
2. 创建请求对象
const req = http.createHttp()
3. 发送请求并获取响应
req.request('请求地址url')
  .then((res: http.HttpResponse) => {
    AlertDialog.show({ message: JSON.stringify(res) })
  })
注意事项
  • 预览器:无需配置网络权限即可成功发送请求。

  • 模拟器:需要配置网络权限才能成功发送请求。

  • 真机:需要配置网络权限才能成功发送请求。

  • 在HarmonyOS中,你需要在module.json5文件中配置网络权限。以下是详细的配置示例:


{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet",
      "2in1"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ],
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],
    "extensionAbilities": [
      {
        "name": "EntryBackupAbility",
        "srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets",
        "type": "backup",
        "exported": false,
        "metadata": [
          {
            "name": "ohos.extension.backup",
            "resource": "$profile:backup_config"
          }
        ]
      }
    ]
  }
}
// 代码示例
import { http } from '@kit.NetworkKit'

const req = http.createHttp()
req.request('请求地址url')
  .then((res: http.HttpResponse) => {
    AlertDialog.show({ message: JSON.stringify(res) })
  })
2. 主要方法

通过一个图书管理案例来详细了解一下http请求数据的基本使用,因为需要用到接口,我使用的是黑马程序员提供的在线接口文档链接仅供学习

在这里插入图片描述

完成效果

在这里插入图片描述

3. 示例代码

export interface IBook{
  /**
   * 响应数组
   */
  data: iBook[];
  /**
   * 响应消息
   */
  message: string;

}

export interface IBookdetail{
  /**
   * 响应数组
   */
  data: iBook;
  /**
   * 响应消息
   */
  message: string;
}
export interface iBook {
  /**
   * 图书作者
   */
  author: string;
  /**
   * 图书名字
   */
  bookname: string;
  /**
   * 图书id
   */
  id: number;
  /**
   * 图书出版社
   */
  publisher: string;
}

export  const creator='艾宝宝'

获取-图书列表 GET &&删除-图书 DELETE

import { IBook, iBook } from '
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值