首页 > 其他分享 >【HarmonyOS Next】多线程网络请求简单封装

【HarmonyOS Next】多线程网络请求简单封装

时间:2024-05-08 14:00:11浏览次数:27  
标签:http expectDataType header url extraData HttpDataType Next HarmonyOS 多线程

import http from '@ohos.net.http';
import { taskpool } from '@kit.ArkTS';

export class Request{

  static async get(url:string, header?: Object, expectDataType: http.HttpDataType = http.HttpDataType.OBJECT ): Promise<Object>{
    return await taskpool.execute(baseRequest, url, http.RequestMethod.GET, header,null, expectDataType);
  }

  static async post(url:string, header?: Object,extraData?: string | Object | ArrayBuffer, expectDataType: http.HttpDataType = http.HttpDataType.OBJECT): Promise<Object>{
    return await taskpool.execute(baseRequest, url, http.RequestMethod.POST, header, extraData, expectDataType);
  }
}

@Concurrent
async function baseRequest(url:string, method:http.RequestMethod, header?: Object, extraData?: string | Object | ArrayBuffer, expectDataType?: http.HttpDataType, connectTimeout?: number,multiFormDataList?: Array<http.MultiFormData>): Promise<http.HttpResponse>{

  console.info(`【http】baseRequest method:${method.toString()} , url:${url}, header:${JSON.stringify(header)}`);
  let httpRequest = http.createHttp();
  let res = await httpRequest.request(
    // 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
    url,
    {
      method: method,  // 可选,默认为http.RequestMethod.GET
      header: header,  // 开发者根据自身业务需要添加header字段
      extraData: extraData, // 当使用POST请求时此字段用于传递内容
      expectDataType: expectDataType, // 可选,指定返回数据的类型
      usingCache: false, // 可选,默认为true
      priority: 1,       // 可选,默认为1
      connectTimeout: connectTimeout, // 可选,默认为60000ms
      readTimeout: 30000, // 可选,默认为60000ms
      multiFormDataList:multiFormDataList
    });
  httpRequest.destroy();
  console.info(`【http】baseRequest response:${res.responseCode} , url:${url}, data:${JSON.stringify(res.result)}`);
  return res;
}

标签:http,expectDataType,header,url,extraData,HttpDataType,Next,HarmonyOS,多线程
From: https://www.cnblogs.com/qiyer/p/18179602

相关文章

  • 鸿蒙HarmonyOS实战-ArkUI事件(焦点事件)
    ......
  • c# 多线程的几种方式 【转载】
    1.什么是线程?进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。 2.前台线程和后台线程的区别?程序关闭时,后台线程直接关闭,但前台线程会执行完后关闭。通过Thread类新建线程默认为前台线程。其他方式创建的都是后台线程......
  • 鸿蒙OS NEXT的推出,目标是更广阔的智能设备市场
    华为官方公布6月份的版本为beta版,依然属于开发者测试版,但可以向普通用户开放了。这点和苹果iOS系统测试形式略微相似:6月份开放首个测试版,随后过渡到公测版,最后再和年度新机一起发布正式版系统。 如果按照这个进度推演,Mate70新机+鸿蒙OSNEXT正式版发布,貌似在Q4是板上钉钉的......
  • HarmonyOS 实现下拉刷新,上拉加载更多
    组件介绍PullToRefreshList允许用户通过下拉动作来刷新列表内容,以及通过上拉动作来加载更多的数据。组件内部封装了滚动监听、状态管理和动画效果,使得开发者可以轻松集成到自己的项目中。1.实现思路封装成可复用的公共控件:将下拉刷新和上拉加载更多功能封装为一个可复用的组......
  • HarmonyOS 垂直方向内容滚动条实现
    概述Swiper组件是一个用户界面元素,用于在垂直方向上滚动内容。它通过遍历一个数据集合,为每一项创建一个可滚动的文本项。代码实现以下是Swiper组件的实现代码:Swiper(){ForEach(searchSwiper,(item,index)=>{Column(){Text(item).fontSize(12)......
  • 【Python】爬虫之多线程
    线程先来理解一下线程的作用,假如有一个工厂,这个工厂里面只有一条生产线,这一条生产线每周可以生产10件产品,像这样的情况就可以理解为单线程。那么问题来了,如果这家工厂收到了一个生产委托,需要在一周之内生产20件产品,这个时候工厂就可以增加一条生产线,提升产能,这个情况就可以理解为......
  • Java多线程
    程序,进程,线程程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念;进程是执行程序的一次执行过程,是一个动态的概念,是系统资源分配的单位;通常在一个进程中可以包含若干个线程,线程是CPU调度和执行的单位;若是单核cpu,则多线程是模拟出来的,在一个cpu的情况下,在同......
  • 多线程TCP的一些问题
    使用循环堵塞等待客户端连接,连接到一个就开一条线程,当用以下代码,即每次ad重新初始化后其地址作为实参进行线程的创建,结果就是当有新客户端连接,开了新线程时,旧线程看起来会被停止,实际上是因为ad用了地址而不是值作为实参,所以当新连接进来时,ad的值被更改,但地址不变,旧线程所使用的ad......
  • 多线程
    1.相关概念程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象进程(process):程序的一次执行过程,或是正在内存中运行的应用程序。如:运行中的QQ,运行中的网易音乐播放器。线程(thread):进程可进一步细化为线程,是程序内部的一条执行路径。一个......
  • 我的第一个套接字通信(基本多线程)....
    前排叠个甲:为什么现在才学习到Linux套接字???我的回答是:大一玩了一年,大二开始接触C++,其中呢,大二上学习完了Qt,大二下才开始接触Linux,而在这期间,反复阅读了C++的特性源码....所以。回归正题:直接放代码,没什么好说的,就那一套流程:服务器端的代码:#include<stdio.h>#include<stdlib.h>......