鸿蒙系列--Http

一、说明

Http 超文本传输协议,是一个简单的请求-响应协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应

二、开发步骤

1.导入http模块

import http from '@ohos.net.http'

2.创建http请求

let httpRequest = http.createHttp()

createHttp成功后,返回一个httpRequest对象,里面包括request、destroy、on和off方法

  • request:发起请求
  • destory:关闭请求
  • on:订阅相关事件
  • off:取消相关事件

每一个HttpRequest对象对应一个http请求

3.订阅请求头,非必须

用于订阅http响应头,此接口会比request请求先返回,可以根据业务需要订阅此消息

httpRequest.on('headerReceive', (header) => {

})

4.发起http请求

http模块支持常用的POST和GET等方法,封装在RequestMethod中。调用request方法发起网络请求,需要传入两个参数。第一个是请求的url地址,第二个是可选参数,类型为HttpRequestOptions

HttpRequestOptions

  • method:请求方式

  • extraData:发送请求的额外数据

  • connectTimeout:连接超时时间

  • readTimeout:读取超时时间

  • header:Http请求头字段
    HTTP支持的请求方式:

  • GET:请求指定的页面信息,并返回响应主体

  • POST:请求会向指定资源提交数据,请求服务器进行处理

  • PUT:请求会向指定资源位置上传其最新内容

  • CONNECT:HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器

  • HEAD:类似于GET请求,返回响应头信息,但是不会返回响应主体

  • DELETE:请求用于请求服务器删除所请求UR

  • TRACE:请求服务器回显其收到的请求信息

  • OPTIONS:请求用于客户端查看服务器的性能

使用Get请求,参数内容需要拼接到URL中进行发送

TypeScript 复制代码
    let url= "https://EXAMPLE_URL?param1=v1&param2=v2";

    let promise = httpRequest.request(url,{
      // 请求方式
      method: http.RequestMethod.GET,
      // 可选,默认为60s
      connectTimeout: 60000,
      // 可选,默认为60s
      readTimeout: 60000,
      // 开发者根据自身业务需要添加header字段
      header: {
        'Content-Type': 'application/json'
      }
    })

POST请求参数需要添加到extraData里面

TypeScript 复制代码
let url = "https://EXAMPLE_URL";
let promise = httpRequest.request(
  // 请求url地址
  url,
  {
    // 请求方式
    method: http.RequestMethod.POST,
    // 请求的额外数据。
    extraData: {
      "param1": "value1",
      "param2": "value2",
    },
    // 可选,默认为60s
    connectTimeout: 60000,
    // 可选,默认为60s
    readTimeout: 60000,
    // 开发者根据自身业务需要添加header字段
    header: {
      'Content-Type': 'application/json'
    }
  });

5.处理响应结果

data为网络请求返回的结果,err为请求异常时返回的结果。data的类型为HttpResponse

TypeScript 复制代码
promise.then((data) => { 
  if (data.responseCode === http.ResponseCode.OK) {
    console.info('Result:' + data.result);
    console.info('code:' + data.responseCode);
  }
}).catch((err) => {
  console.info('error:' + JSON.stringify(err));
});

其中data.responseCode为http请求返回的状态码,如果状态码为http.ResponseCode.OK(即200),则表示请求成功

data.result为服务器返回的业务数据,可以根据自身业务场景解析此数据

相关推荐
wasp5202 小时前
做了技术管理后,我发现技术和管理其实可以兼得
java·运维·网络
威哥爱编程3 小时前
【鸿蒙开发实战篇】鸿蒙6 AI智能体集成实战
harmonyos·arkts·arkui
威哥爱编程3 小时前
【鸿蒙开发实战篇】鸿蒙开发中如何利用代码检查工具(codelinter)的技巧和经验
harmonyos·arkts·arkui
威哥爱编程3 小时前
【鸿蒙开发实战篇】鸿蒙6开发中CANN Kit十大常见问题与解决方案
harmonyos·arkts·arkui
赖small强3 小时前
【Linux 网络基础】HTTPS 技术文档
linux·网络·https·tls
雲烟4 小时前
嵌入式设备EMC安规检测参考
网络·单片机·嵌入式硬件
Yue丶越4 小时前
【C语言】数据在内存中的存储
c语言·开发语言·网络
向哆哆4 小时前
深入理解华为CANN静态Tensor编程范式:极致性能的算子开发之道
华为·算子·昇腾·cann
Altair12314 小时前
nginx的https的搭建
运维·网络·nginx·云计算
李宥小哥4 小时前
Redis10-原理-网络模型
开发语言·网络·php