首页 > 其他分享 >3.19 HarmonyOS 网络请求工具类

3.19 HarmonyOS 网络请求工具类

时间:2024-03-19 21:22:38浏览次数:19  
标签:httpRequest 3.19 stringify http 请求 err HarmonyOS JSON string

网络请求部分的代码实在是太麻烦了,所以把他封装成一个工具类使用起来方便些

今天先封装两个,一个是post把集合传给后端,一个是get查询全部

import http from '@ohos.net.http';

class AxiosUtil {
private httpRequest = http.createHttp();

constructor() {
// 用于订阅HTTP响应头
this.httpRequest.on('headersReceive', (header) => {
console.info('header: ' + JSON.stringify(header));
});
}

public async getAllUtil(url: string): Promise<any> {
return new Promise((resolve, reject) => {
this.httpRequest.request(
url,
{
method: http.RequestMethod.GET,
header: {
'Content-Type': 'application/json'
},
usingCache: true,
priority: 1,
connectTimeout: 60000,
readTimeout: 60000,
usingProtocol: http.HttpProtocol.HTTP1_1,
},
(err, data) => {
if (!err) {
try {
const res = JSON.parse(data.result as string);
resolve(res); // 解析成功后 resolve 出去
} catch (parseError) {
reject(parseError); // JSON 解析失败时 reject 出去
}
} else {
console.info('error:' + JSON.stringify(err));
this.httpRequest.off('headersReceive');
this.httpRequest.destroy();
reject(err); // 发生错误时 reject 出去
}
},
);
});
}

public async postUtil(postclass: object, url: string): Promise<any> {
const requestBody = JSON.stringify(postclass);

return new Promise((resolve, reject) => {
this.httpRequest.request(
url,
{
method: http.RequestMethod.POST,
header: {
'Content-Type': 'application/json'
},
extraData: requestBody,
expectDataType: http.HttpDataType.STRING,
usingCache: true,
priority: 1,
connectTimeout: 60000,
readTimeout: 60000,
usingProtocol: http.HttpProtocol.HTTP1_1,
},
(err, data) => {
if (!err) {
console.info('Result:' + JSON.stringify(data.result));
console.info('code:' + JSON.stringify(data.responseCode));
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + JSON.stringify(data.cookies));
resolve(
data.result
);
} else {
console.info('error:' + JSON.stringify(err));
this.httpRequest.off('headersReceive');
this.httpRequest.destroy();
reject(err);
}
},
);
});
}
}

export default AxiosUtil;

然后就可以在别的界面直接调用咯


import AxiosUtil from '../common/util/axiosUtil';
class CourseDetails {
coursename: string;
teacher: string;
classroom: string;

constructor(coursename: string, teacher: string, classroom: string) {
this.coursename = coursename;
this.teacher = teacher;
this.classroom = classroom;
}
}

@Entry
@Component
struct AxiosPage {
courseDetails: CourseDetails = new CourseDetails('jack5', '王建', '206');
@State Return:string = 'error'
@State students:Object[] = null
axiosInstance:AxiosUtil = new AxiosUtil();
url : string = 'http://localhost:8080/newcourse'
url2 : string = 'http://localhost:8080/book'

async get() {
// 在适当的地方调用 postUtil 方法
this.Return = await this.axiosInstance.postUtil(this.courseDetails,this.url);
}

async get2() {
this.students = await this.axiosInstance.getAllUtil(this.url2)
// 在适当的地方调用 postUtil 方法
}
build() {
Row() {
Column() {
List(){
ForEach(this.students,item=>{
ListItem(){
Row(){
Text(item.bookName)
}
}
})
}
Text(this.Return)
Button('发送')
.onClick(() => this.get())
Button('发送2')
.onClick(() => this.get2())
}
.width('100%')
}
.height('100%')
}
}

标签:httpRequest,3.19,stringify,http,请求,err,HarmonyOS,JSON,string
From: https://www.cnblogs.com/zeyangshuaige/p/18083975

相关文章

  • 【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Applicat
    问题描述AzureAPIManagementSelf-HostGateway是否可以把请求的日志发送到ApplicationInsights呢?让它和使用Azure上托管的Gateway一样呢?这是在APIM门户上配置API,设置的DiagnosticsLogs,当选择ApplicationInsights时,就可以把对接口请求时候所携带的Header/Body等信息发送......
  • 3.19
    Android采用Sqlite作为数据库存储。Sqlite代码写起来繁琐且容易出错,所以开源社区里逐渐出现了各种ORM(ObjectRelationalMapping)库。这些开源ORM库都是为了方便Sqlite的使用,包括数据库的创建,升级,增删改查等。常见的ORM有ORMLite,GreenDAO等。Google也意识到了推出自家ORM的必要性,于......
  • 项目中请求第三方接口踩坑记录
    问题代码@Slf4jpublicclassTestWechat{public<TextendsWxBaseReq,KextendsWxBaseResp>KsendV3(Tt,Stringmethod,Class<K>kClass){Kk=null;Stringbody=JSON.toJSONString(t);StringapiUrl="";......
  • 随笔,发散了 3.19
    okihavefinishedthelisteningandthereadingtasks.andnowineedtowritesomething ohicansharesomedreamswithu iwilldreamsomethingwiredwheniwassleeping.butIcannotreallyrememberallthedreams. irememberedadreamthatiwas......
  • 2024.03.19【文字排版】作为设计师 这三个功能不用还是尽量别用
    第一个功能-黑色加粗的“B”它是Bold的简写,可以通过这一功能将字体给加粗加大一号。可是实际上这个功能并不是把字体变成大一号,而是单纯的给字体加上一个外轮廓,这样不仅破坏了设计师原本的字形轮廓设计,可选粗细单一而且会使得字体变形,看着不美观也不自然所以大部分字库都会......
  • HarmonyOS应用开发实战 - Api9 拍照、拍视频、选择图片、选择视频、选择文件工具类
    鸿蒙开发过程中,经常会进行系统调用,拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一个工具类。1.话不多说,先展示样式2.设计思路根据官方提供的指南开发工具类,基础的拍照、拍视频、图库选照片、选文件不过多缀述,图库选择这里设计成集合形式,可返......
  • HarmonyOS-基础之内置组件学习
    1、Image图片组件鸿蒙内置组件Image的4种写法//鸿蒙内置Image图片组件案例@Entry@ComponentstructImagePage{build(){Column({space:20}){//1、图片的第一种写法media文件夹下Image($r('app.media.pig')).width(200).height(200);//2......
  • 零基础小白如何入门HarmonyOS鸿蒙应用开发学习?
    HarmonyOS鸿蒙应用开发是当前非常热门的一个领域,许多人都想入门学习这个技术。但是,对于零基础的人来说,如何入门确实是一个问题。下面,我将从以下几个方面来介绍如何零基础入门HarmonyOS鸿蒙应用开发学习。一、了解HarmonyOS鸿蒙系统首先,我们需要了解HarmonyOS鸿蒙系统的一些......
  • promise与async/await连用全部请求结束时获取请求结果
    async/await获取请求结束时机,拿到结果(非promise类型的结果)constgetModalData=useCallback(async()=>{constresult=awaitsendRequest(currentCabinet)setData(result)},[currentCabinet])定义promise:因为此处的请求方法结果返回的时promise......
  • feigni请求添加拦截器
    @FeignClient的configuration属性:Feign注解@FeignClient的configuration属性,可以对feign的请求进行配置。包括配置Feign的Encoder、Decoder、Interceptor等。feign请求添加拦截器,也可以通过这个configuration属性来指定。feign请求拦截器RequestIntercept......