鸿蒙开发网络管理:【 @ohos.net.http (数据请求)】

数据请求

 说明:

本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

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

完整示例

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

// 每一个httpRequest对应一个http请求任务,不可复用
let httpRequest = http.createHttp();
// 用于订阅http响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
// 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(
    // 填写http请求的url地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
    "EXAMPLE_URL",
    {
        method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
        // 开发者根据自身业务需要添加header字段
        header: {
            'Content-Type': 'application/json'
        },
        // 当使用POST请求时此字段用于传递内容
        extraData: {
            "data": "data to send",
        },
        connectTimeout: 60000, // 可选,默认为60s
        readTimeout: 60000, // 可选,默认为60s
    }, (err, data) => {
        if (!err) {
            // data.result为http响应内容,可根据业务需要进行解析
            console.info('Result:' + data.result);
            console.info('code:' + data.responseCode);
            // data.header为http响应头,可根据业务需要进行解析
            console.info('header:' + JSON.stringify(data.header));
            console.info('cookies:' + data.cookies); // 8+
        } else {
            console.info('error:' + JSON.stringify(err));
            // 当该请求使用完毕时,调用destroy方法主动销毁。
            httpRequest.destroy();
        }
    }
);

http.createHttp

createHttp(): HttpRequest

创建一个http,里面包括发起请求、中断请求、订阅/取消订阅HTTP Response Header 事件。每一个HttpRequest对象对应一个Http请求。如需发起多个Http请求,须为每个Http请求创建对应HttpRequest对象。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
HttpRequest返回一个HttpRequest对象,里面包括request、destroy、on和off方法。

示例:

import http from '@ohos.net.http';
let httpRequest = http.createHttp();

HttpRequest

http请求任务。在调用HttpRequest的方法前,需要先通过[createHttp()]创建一个任务。

request

request(url: string, callback: AsyncCallback):void

根据URL地址,发起HTTP网络请求,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring发起网络请求的URL地址。
callbackAsyncCallback<[HttpResponse]>回调函数。

示例:

httpRequest.request("EXAMPLE_URL", (err, data) => {
    if (!err) {
        console.info('Result:' + data.result);
        console.info('code:' + data.responseCode);
        console.info('header:' + JSON.stringify(data.header));
        console.info('cookies:' + data.cookies); // 8+
    } else {
        console.info('error:' + JSON.stringify(err));
    }
});

request

request(url: string, options: HttpRequestOptions, callback: AsyncCallback):void

根据URL地址和相关配置项,发起HTTP网络请求,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring发起网络请求的URL地址。
optionsHttpRequestOptions参考[HttpRequestOptions]。
callbackAsyncCallback<[HttpResponse]>回调函数。

示例:

httpRequest.request("EXAMPLE_URL",
{
    method: http.RequestMethod.GET,
    header: {
        'Content-Type': 'application/json'
    },
    readTimeout: 60000,
    connectTimeout: 60000
}, (err, data) => {
    if (!err) {
        console.info('Result:' + data.result);
        console.info('code:' + data.responseCode);
        console.info('header:' + JSON.stringify(data.header));
        console.info('cookies:' + data.cookies); // 8+
        console.info('header.Content-Type:' + data.header['Content-Type']);
        console.info('header.Status-Line:' + data.header['Status-Line']);
    } else {
        console.info('error:' + JSON.stringify(err));
    }
});

request

request(url: string, options? : HttpRequestOptions): Promise

根据URL地址,发起HTTP网络请求,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring发起网络请求的URL地址。
optionsHttpRequestOptions参考[HttpRequestOptions]。

返回值:

类型说明
Promise<[HttpResponse]>以Promise形式返回发起请求的结果。

示例:

let promise = httpRequest.request("EXAMPLE_URL", {
    method: http.RequestMethod.GET,
    connectTimeout: 60000,
    readTimeout: 60000,
    header: {
        'Content-Type': 'application/json'
    }
});
promise.then((data) => {
    console.info('Result:' + data.result);
    console.info('code:' + data.responseCode);
    console.info('header:' + JSON.stringify(data.header));
    console.info('cookies:' + data.cookies); // 8+
    console.info('header.Content-Type:' + data.header['Content-Type']);
    console.info('header.Status-Line:' + data.header['Status-Line']);
}).catch((err) => {
    console.info('error:' + JSON.stringify(err));
});

destroy

destroy(): void

中断请求任务。

系统能力:SystemCapability.Communication.NetStack

示例:

httpRequest.destroy();

on(‘headerReceive’)

on(type: ‘headerReceive’, callback: AsyncCallback): void

订阅HTTP Response Header 事件。

 说明:  此接口已废弃,建议使用[on(‘headersReceive’)8+]替代。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型,‘headerReceive’。
callbackAsyncCallback回调函数。

示例:

httpRequest.on('headerReceive', (err, data) => {
    if (!err) {
        console.info('header: ' + JSON.stringify(data));
    } else {
        console.info('error:' + JSON.stringify(err));
    }
});

off(‘headerReceive’)

off(type: ‘headerReceive’, callback?: AsyncCallback): void

取消订阅HTTP Response Header 事件。

 说明:

  1. 此接口已废弃,建议使用[off(‘headersReceive’)8+]替代。
  2. 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring取消订阅的事件类型,‘headerReceive’。
callbackAsyncCallback回调函数。

示例:

httpRequest.off('headerReceive');

on(‘headersReceive’)8+

on(type: ‘headersReceive’, callback: Callback): void

订阅HTTP Response Header 事件。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型:‘headersReceive’。
callbackCallback回调函数。

示例:

httpRequest.on('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
});

off(‘headersReceive’)8+

off(type: ‘headersReceive’, callback?: Callback): void

取消订阅HTTP Response Header 事件。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring取消订阅的事件类型:‘headersReceive’。
callbackCallback回调函数。

示例:

httpRequest.off('headersReceive');

once(‘headersReceive’)8+

once(type: ‘headersReceive’, callback: Callback): void

订阅HTTP Response Header 事件,但是只触发一次。一旦触发之后,订阅器就会被移除。使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring订阅的事件类型:‘headersReceive’。
callbackCallback回调函数。

示例:

httpRequest.once('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
});

HttpRequestOptions

发起请求可选参数的类型和取值范围。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
method[RequestMethod]请求方式。
extraDatastringObjectArrayBuffer8+
headerObjectHTTP请求头字段。默认{‘Content-Type’: ‘application/json’}。
readTimeoutnumber读取超时时间。单位为毫秒(ms),默认为60000ms。
connectTimeoutnumber连接超时时间。单位为毫秒(ms),默认为60000ms。

RequestMethod

HTTP 请求方法。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

名称说明
OPTIONSOPTIONSHTTP 请求 OPTIONS。
GETGETHTTP 请求 GET。
HEADHEADHTTP 请求 HEAD。
POSTPOSTHTTP 请求 POST。
PUTPUTHTTP 请求 PUT。
DELETEDELETEHTTP 请求 DELETE。
TRACETRACEHTTP 请求 TRACE。
CONNECTCONNECTHTTP 请求 CONNECT。

ResponseCode

发起请求返回的响应码。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

名称说明
OK200请求成功。一般用于GET与POST请求。
CREATED201已创建。成功请求并创建了新的资源。
ACCEPTED202已接受。已经接受请求,但未处理完成。
NOT_AUTHORITATIVE203非授权信息。请求成功。
NO_CONTENT204无内容。服务器成功处理,但未返回内容。
RESET205重置内容。
PARTIAL206部分内容。服务器成功处理了部分GET请求。
MULT_CHOICE300多种选择。
MOVED_PERM301永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。
MOVED_TEMP302临时移动。
SEE_OTHER303查看其它地址。
NOT_MODIFIED304未修改。
USE_PROXY305使用代理。
BAD_REQUEST400客户端请求的语法错误,服务器无法理解。
UNAUTHORIZED401请求要求用户的身份认证。
PAYMENT_REQUIRED402保留,将来使用。
FORBIDDEN403服务器理解请求客户端的请求,但是拒绝执行此请求。
NOT_FOUND404服务器无法根据客户端的请求找到资源(网页)。
BAD_METHOD405客户端请求中的方法被禁止。
NOT_ACCEPTABLE406服务器无法根据客户端请求的内容特性完成请求。
PROXY_AUTH407请求要求代理的身份认证。
CLIENT_TIMEOUT408请求时间过长,超时。
CONFLICT409服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突。
GONE410客户端请求的资源已经不存在。
LENGTH_REQUIRED411服务器无法处理客户端发送的不带Content-Length的请求信息。
PRECON_FAILED412客户端请求信息的先决条件错误。
ENTITY_TOO_LARGE413由于请求的实体过大,服务器无法处理,因此拒绝请求。
REQ_TOO_LONG414请求的URI过长(URI通常为网址),服务器无法处理。
UNSUPPORTED_TYPE415服务器无法处理请求的格式。
INTERNAL_ERROR500服务器内部错误,无法完成请求。
NOT_IMPLEMENTED501服务器不支持请求的功能,无法完成请求。
BAD_GATEWAY502充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。
UNAVAILABLE503由于超载或系统维护,服务器暂时的无法处理客户端的请求。
GATEWAY_TIMEOUT504充当网关或代理的服务器,未及时从远端服务器获取请求。
VERSION505服务器请求的HTTP协议的版本。

HttpResponse

request方法回调函数的返回值类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
resultstringObjectArrayBuffer8+
responseCode[ResponseCode]number
headerObject发起http请求返回来的响应头。当前返回的是JSON格式字符串,如需具体字段内容,需开发者自行解析。常见字段及解析方式如下: - Content-Type:header[‘Content-Type’]; - Status-Line:header[‘Status-Line’]; - Date:header.Date/header[‘Date’]; - Server:header.Server/header[‘Server’];
cookies8+Array服务器返回的 cookies。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/719945.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux安装并配置Java

1、Linux操作系统安装Java 1.1、下载Java JDK解压包 官方提供的网址&#xff1a; 选择Linux版本 下载列表选择最后一项&#xff0c;通过解压方式安装 倒数第二项是以rpm方式进行安装&#xff0c;另一篇安装MySQL时就是用到rpm方法。 1.2、解压JDK tar -zxvf jdk-8u411-lin…

MyBatisPlus可以自动把我们的业务对应的动态代理接口注入到父类baseMapper属性中,因此我们可以省略对应的mapper动态代理接口

MyBatisPlus可以自动把我们的业务对应的动态代理接口注入到父类baseMapper属性中&#xff0c;因此我们可以省略对应的mapper动态代理接口 在service服务实现类中&#xff0c;当我们使用MyBatis框架的时候&#xff0c;那么一般会有一个类似于下面的动态地理接口的显示引入&…

复分析——第3章——亚纯函数和对数(E.M. Stein R. Shakarchi)

第3章 亚纯函数和对数 (Meromorphic Functions and the Logarithm) One knows that the differential calculus, which has contributed so much to the progress of analysis, is founded on the consideration of differential coefficients, that is derivatives of f…

MySQL数据库与基本操作(增删改查)

一、数据库的基本概念 数据库要学习的四个基本概念&#xff0c;主要是&#xff1a;数据、数据库系统、数据库、数据管理系统。数据&#xff08;Date&#xff09;是描述事物的记录&#xff0c;数据库系统&#xff08;DBS&#xff09;&#xff0c;数据库管理系统&#xff08;DBMS…

k8s学习--chart包开发(创建chart包)

文章目录 chart包应用环境一、安装helm客户端工具二、chart包目录结构三、创建不可配置的chart1.创建目录和chart.yaml2.创建deployment.yaml3.创建service.yaml4.使用chart安装应用5.查看和验证 四、创建可配置的Chart1.官方的预定义变量2.新增values.yaml文件3.配置deploy引用…

页面开发提效的神器:自动打开 IDE 并将光标定位至 DOM 的源代码位置

先看使用效果&#xff1a; 在webpack使用Code Inspector插件 使用方法 // vue.config.js const { codeInspectorPlugin } require(code-inspector-plugin); chainWebpack(config) {config.plugin(code-inspector-plugin).use(codeInspectorPlugin({bundler: webpack,hotKe…

【Altium】PCB设计中如何设置同一网络的间距规则

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标&#xff1a; 对同一网络的各个元素间设置间距规则 2、应用场景&#xff1a; PCB设计规则中&#xff0c;当对网络设置间距规则时&#xff0c;默认的约束对象是不同的网络之间才生效&#xff0c;在一些特殊情况下&am…

网站的友情链接有什么作用

1.对于用户的作用 网站的友情链接能够让用户可以了解到更多的产品服务或者其他信息&#xff0c;这对于用户来说起到一个便捷服务的作用&#xff0c;如果用户不需要的话就不说了&#xff0c;但是如果用户需要到的服务&#xff0c;也就是相当于给用户提供多一个服务渠道。…

NSSCTF-Web题目9

目录 [SWPUCTF 2021 新生赛]sql 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]xff 1、题目 2、知识点 3、思路 [FSCTF 2023]源码&#xff01;启动! 1、题目 2、知识点 3、思路 [SWPUCTF 2021 新生赛]sql 1、题目 2、知识点 SQL注入&#xff0c;空格、注释符等…

【AI开发】RAG基础

RAG的基本流程&#xff1a; 用一个loader把knowledge base里的知识做成一个个的document&#xff0c;然后把document切分成snippets&#xff0c;把snippets通过embedding&#xff08;比如openai的embedding模型或者huggingface的&#xff09;向量化&#xff0c;存储到vectordb…

男士内裤哪个品牌质量好?国内质量好的男士内裤推荐

男士内裤&#xff0c;作为每日贴身陪伴的必需品&#xff0c;舒适度无疑是我们的首要考量。想象一下&#xff0c;闷热不透气、夹臀卡裆、或是束缚紧勒&#xff0c;这些不舒适的感觉无疑会破坏我们一整天的美好心情。 虽然它看似只是一块简单的布料&#xff0c;但这个小伙伴却与…

随心笔记,第六更

目录 一、 三步构建 XML转成java bean 1.XML转XSD 2.XSD转JavaBean 3.jaxb 工具类 4.测试 &#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「Leen」。刚工作几年&#xff0c;想和大家一同进步&am…

QTday2

使用手动连接&#xff0c;将登录框中的取消按钮使用第二中连接方式&#xff0c;右击转到槽&#xff0c;在该槽函数中&#xff0c;调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0…

迷你手持小风扇十大名牌排名有哪些?公认迷你小风扇排行榜揭开!

随着夏季高温的来临&#xff0c;迷你小风扇成为了大家追求清凉和舒适的必备工具。其小巧便携的设计、强劲的风力和长续航时间&#xff0c;使得迷你小风扇迅速在市场上走红。然而&#xff0c;面对琳琅满目的品牌和各种型号&#xff0c;如何选择一款既高效又耐用的迷你小风扇成为…

基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建+V R体绘制4个视图展示功能的实现

开源库&#xff1a;VTK9.3.0 开发工具&#xff1a;Visual Studio2017 开发语言&#xff1a;C 实现过程&#xff1a; class vtkImageInteractionCallback : public vtkCommand { public:static vtkImageInteractionCallback* New(){return new vtkImageInteractionCallback()…

Fiddler实现重定向

fiddler设置响应后断点 命令&#xff1a;bpafter url 配置以后&#xff0c;此时服务器响应的数据在fiddler中被劫持&#xff0c;浏览器显示的是一片空白&#xff08;类似加载不出的效果&#xff09; fiddler中可以修改返回的响应内容 选择一个图片&#xff0c;然后点击run t…

6.S081——CPU调度部分(Xv6中的进程的状态转换)——xv6源码完全解析系列(11)

0.briefly speaking 时隔9个月&#xff0c;我又回来继续更新Xv6内核源码相关的内容了&#xff0c;上次更新之后经历了3个月的秋招&#xff0c;之后紧接着是实验室的中期检查&#xff0c;之后又是遥遥无期的毕业论文写作和修改&#xff0c;总算到现在有了一些自己的时间来继续做…

三分钟了解链动3+1模式

在电商领域的营销策略中&#xff0c;链动31模式以其独特的魅力和优势&#xff0c;吸引了众多商家的目光。下面&#xff0c;我们将对这一模式进行深度剖析&#xff0c;并探讨其相较于链动21模式的优势所在。 一、身份设置与奖励机制 链动31模式在身份设置上分为三种&#xff1…

历年各地区养老金发放人数,多图可用,含shp和excel格式

基本信息. 数据名称: 历年各地区养老金发放人数 数据格式: Shpexcel 数据几何类型: 面 数据坐标系: WGS84 数据时间&#xff1a;2012-2021年 数据来源&#xff1a;网络公开数据 数据可视化.

Python深度学习基于Tensorflow(17)基于Transformer的图像处理实例VIT和Swin-T

文章目录 VIT 模型搭建Swin-T 模型搭建参考 这里使用 VIT 和 Swin-T 在数据集 cifar10 上进行训练 VIT 模型搭建 导入需要的外部库 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec这里我们接着使用 ci…