0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)網(wǎng)絡(luò)管理: @ohos.net.http 數(shù)據(jù)請(qǐng)求

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-18 15:42 ? 次閱讀

數(shù)據(jù)請(qǐng)求

說明:
開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
本模塊首批接口從API version 6開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。

導(dǎo)入模塊

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

完整示例

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

// 每一個(gè)httpRequest對(duì)應(yīng)一個(gè)http請(qǐng)求任務(wù),不可復(fù)用
let httpRequest = http.createHttp();
// 用于訂閱http響應(yīng)頭,此接口會(huì)比request請(qǐng)求先返回??梢愿鶕?jù)業(yè)務(wù)需要訂閱此消息
// 從API 8開始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) = > {
    console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(
    // 填寫http請(qǐng)求的url地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開發(fā)者自定義。請(qǐng)求的參數(shù)可以在extraData中指定
    "EXAMPLE_URL",
    {
        method: http.RequestMethod.POST, // 可選,默認(rèn)為http.RequestMethod.GET
        // 開發(fā)者根據(jù)自身業(yè)務(wù)需要添加header字段
        header: {
            'Content-Type': 'application/json'
        },
        // 當(dāng)使用POST請(qǐng)求時(shí)此字段用于傳遞內(nèi)容
        extraData: {
            "data": "data to send",
        },
        connectTimeout: 60000, // 可選,默認(rèn)為60s
        readTimeout: 60000, // 可選,默認(rèn)為60s
    }, (err, data) = > {
        if (!err) {
            // data.result為http響應(yīng)內(nèi)容,可根據(jù)業(yè)務(wù)需要進(jìn)行解析
            console.info('Result:' + data.result);
            console.info('code:' + data.responseCode);
            // data.header為http響應(yīng)頭,可根據(jù)業(yè)務(wù)需要進(jìn)行解析
            console.info('header:' + JSON.stringify(data.header));
            console.info('cookies:' + data.cookies); // 8+
        } else {
            console.info('error:' + JSON.stringify(err));
            // 當(dāng)該請(qǐng)求使用完畢時(shí),調(diào)用destroy方法主動(dòng)銷毀。
            httpRequest.destroy();
        }
    }
);

http.createHttp

createHttp(): HttpRequest

創(chuàng)建一個(gè)http,里面包括發(fā)起請(qǐng)求、中斷請(qǐng)求、訂閱/取消訂閱HTTP Response Header 事件。每一個(gè)HttpRequest對(duì)象對(duì)應(yīng)一個(gè)Http請(qǐng)求。如需發(fā)起多個(gè)Http請(qǐng)求,須為每個(gè)Http請(qǐng)求創(chuàng)建對(duì)應(yīng)HttpRequest對(duì)象。

系統(tǒng)能力 :SystemCapability.Communication.NetStack

返回值:

類型說明
HttpRequest返回一個(gè)HttpRequest對(duì)象,里面包括request、destroy、on和off方法。

示例:

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

HttpRequest

http請(qǐng)求任務(wù)。在調(diào)用HttpRequest的方法前,需要先通過[createHttp()]創(chuàng)建一個(gè)任務(wù)。

request

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

根據(jù)URL地址,發(fā)起HTTP網(wǎng)絡(luò)請(qǐng)求,使用callback方式作為異步方法。

需要權(quán)限 :ohos.permission.INTERNET

系統(tǒng)能力 :SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名類型必填說明
urlstring發(fā)起網(wǎng)絡(luò)請(qǐng)求的URL地址。
callbackAsyncCallback<[HttpResponse]>回調(diào)函數(shù)。

示例:

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

根據(jù)URL地址和相關(guān)配置項(xiàng),發(fā)起HTTP網(wǎng)絡(luò)請(qǐng)求,使用callback方式作為異步方法。

需要權(quán)限 :ohos.permission.INTERNET

系統(tǒng)能力 :SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名類型必填說明
urlstring發(fā)起網(wǎng)絡(luò)請(qǐng)求的URL地址。
optionsHttpRequestOptions參考[HttpRequestOptions]。
callbackAsyncCallback<[HttpResponse]>回調(diào)函數(shù)。

示例:

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

根據(jù)URL地址,發(fā)起HTTP網(wǎng)絡(luò)請(qǐng)求,使用Promise方式作為異步方法。

需要權(quán)限 :ohos.permission.INTERNET

系統(tǒng)能力 :SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名類型必填說明
urlstring發(fā)起網(wǎng)絡(luò)請(qǐng)求的URL地址。
optionsHttpRequestOptions參考[HttpRequestOptions]。

返回值:

類型說明
Promise<[HttpResponse]>以Promise形式返回發(fā)起請(qǐng)求的結(jié)果。

示例:

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

中斷請(qǐng)求任務(wù)。

系統(tǒng)能力 :SystemCapability.Communication.NetStack

示例:

httpRequest.destroy();

on('headerReceive')

on(type: 'headerReceive', callback: AsyncCallback ): void

訂閱HTTP Response Header 事件。

說明: 此接口已廢棄,建議使用[on('headersReceive')8+]替代。

系統(tǒng)能力 :SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名類型必填說明
typestring訂閱的事件類型,'headerReceive'。
callbackAsyncCallback回調(diào)函數(shù)。

示例:

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取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。

系統(tǒng)能力 :SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名類型必填說明
typestring取消訂閱的事件類型,'headerReceive'。
callbackAsyncCallback回調(diào)函數(shù)。

示例:

httpRequest.off('headerReceive');

on('headersReceive')8+

on(type: 'headersReceive', callback: Callback ): void

訂閱HTTP Response Header 事件。

系統(tǒng)能力 :SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名類型必填說明
typestring訂閱的事件類型:'headersReceive'。
callbackCallback回調(diào)函數(shù)。

示例:

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

off('headersReceive')8+

off(type: 'headersReceive', callback?: Callback ): void

取消訂閱HTTP Response Header 事件。

說明: 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。

系統(tǒng)能力 :SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名類型必填說明
typestring取消訂閱的事件類型:'headersReceive'。
callbackCallback回調(diào)函數(shù)。

示例:

httpRequest.off('headersReceive');

once('headersReceive')8+

once(type: 'headersReceive', callback: Callback ): void

訂閱HTTP Response Header 事件,但是只觸發(fā)一次。一旦觸發(fā)之后,訂閱器就會(huì)被移除。使用callback方式作為異步方法。

系統(tǒng)能力 :SystemCapability.Communication.NetStack

參數(shù):

參數(shù)名類型必填說明
typestring訂閱的事件類型:'headersReceive'。
callbackCallback回調(diào)函數(shù)。

示例:

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

HttpRequestOptions

發(fā)起請(qǐng)求可選參數(shù)的類型和取值范圍。

系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

參數(shù)名類型必填說明
method[RequestMethod]請(qǐng)求方式。
extraDatastringObjectArrayBuffer8+
headerObjectHTTP請(qǐng)求頭字段。默認(rèn){'Content-Type': 'application/json'}。
readTimeoutnumber讀取超時(shí)時(shí)間。單位為毫秒(ms),默認(rèn)為60000ms。
connectTimeoutnumber連接超時(shí)時(shí)間。單位為毫秒(ms),默認(rèn)為60000ms。

RequestMethod

HTTP 請(qǐng)求方法。

系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱說明
OPTIONSOPTIONSHTTP 請(qǐng)求 OPTIONS。
GETGETHTTP 請(qǐng)求 GET。
HEADHEADHTTP 請(qǐng)求 HEAD。
POSTPOSTHTTP 請(qǐng)求 POST。
PUTPUTHTTP 請(qǐng)求 PUT。
DELETEDELETEHTTP 請(qǐng)求 DELETE。
TRACETRACEHTTP 請(qǐng)求 TRACE。
CONNECTCONNECTHTTP 請(qǐng)求 CONNECT。

ResponseCode

發(fā)起請(qǐng)求返回的響應(yīng)碼。

系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

名稱說明
OK200請(qǐng)求成功。一般用于GET與POST請(qǐng)求。
CREATED201已創(chuàng)建。成功請(qǐng)求并創(chuàng)建了新的資源。
ACCEPTED202已接受。已經(jīng)接受請(qǐng)求,但未處理完成。
NOT_AUTHORITATIVE203非授權(quán)信息。請(qǐng)求成功。
NO_CONTENT204無內(nèi)容。服務(wù)器成功處理,但未返回內(nèi)容。
RESET205重置內(nèi)容。
PARTIAL206部分內(nèi)容。服務(wù)器成功處理了部分GET請(qǐng)求。
MULT_CHOICE300多種選擇。
MOVED_PERM301永久移動(dòng)。請(qǐng)求的資源已被永久的移動(dòng)到新URI,返回信息會(huì)包括新的URI,瀏覽器會(huì)自動(dòng)定向到新URI。
MOVED_TEMP302臨時(shí)移動(dòng)。
SEE_OTHER303查看其它地址。
NOT_MODIFIED304未修改。
USE_PROXY305使用代理。
BAD_REQUEST400客戶端請(qǐng)求的語法錯(cuò)誤,服務(wù)器無法理解。
UNAUTHORIZED401請(qǐng)求要求用戶的身份認(rèn)證。
PAYMENT_REQUIRED402保留,將來使用。
FORBIDDEN403服務(wù)器理解請(qǐng)求客戶端的請(qǐng)求,但是拒絕執(zhí)行此請(qǐng)求。
NOT_FOUND404服務(wù)器無法根據(jù)客戶端的請(qǐng)求找到資源(網(wǎng)頁)。
BAD_METHOD405客戶端請(qǐng)求中的方法被禁止。
NOT_ACCEPTABLE406服務(wù)器無法根據(jù)客戶端請(qǐng)求的內(nèi)容特性完成請(qǐng)求。
PROXY_AUTH407請(qǐng)求要求代理的身份認(rèn)證。
CLIENT_TIMEOUT408請(qǐng)求時(shí)間過長(zhǎng),超時(shí)。
CONFLICT409服務(wù)器完成客戶端的PUT請(qǐng)求是可能返回此代碼,服務(wù)器處理請(qǐng)求時(shí)發(fā)生了沖突。
GONE410客戶端請(qǐng)求的資源已經(jīng)不存在。
LENGTH_REQUIRED411服務(wù)器無法處理客戶端發(fā)送的不帶Content-Length的請(qǐng)求信息。
PRECON_FAILED412客戶端請(qǐng)求信息的先決條件錯(cuò)誤。
ENTITY_TOO_LARGE413由于請(qǐng)求的實(shí)體過大,服務(wù)器無法處理,因此拒絕請(qǐng)求。
REQ_TOO_LONG414請(qǐng)求的URI過長(zhǎng)(URI通常為網(wǎng)址),服務(wù)器無法處理。
UNSUPPORTED_TYPE415服務(wù)器無法處理請(qǐng)求的格式。
INTERNAL_ERROR500服務(wù)器內(nèi)部錯(cuò)誤,無法完成請(qǐng)求。
NOT_IMPLEMENTED501服務(wù)器不支持請(qǐng)求的功能,無法完成請(qǐng)求。
BAD_GATEWAY502充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,從遠(yuǎn)端服務(wù)器接收到了一個(gè)無效的請(qǐng)求。
UNAVAILABLE503由于超載或系統(tǒng)維護(hù),服務(wù)器暫時(shí)的無法處理客戶端的請(qǐng)求。
GATEWAY_TIMEOUT504充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,未及時(shí)從遠(yuǎn)端服務(wù)器獲取請(qǐng)求。
VERSION505服務(wù)器請(qǐng)求的HTTP協(xié)議的版本。HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

搜狗高速瀏覽器截圖20240326151450.png

HttpResponse

request方法回調(diào)函數(shù)的返回值類型。

系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。

參數(shù)名類型必填說明
resultstringObjectArrayBuffer8+
responseCode[ResponseCode]number
headerObject發(fā)起http請(qǐng)求返回來的響應(yīng)頭。當(dāng)前返回的是JSON格式字符串,如需具體字段內(nèi)容,需開發(fā)者自行解析。常見字段及解析方式如下: - Content-Type:header['Content-Type']; - Status-Line:header['Status-Line']; - Date:header.Date/header['Date']; - Server:header.Server/header['Server'];
cookies8+Array服務(wù)器返回的 cookies。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2294

    瀏覽量

    42633
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙OS開發(fā)實(shí)例:【工具類封裝-http請(qǐng)求

    **import http from '@ohos.net.http'; import promptAction from &apos
    的頭像 發(fā)表于 03-27 22:32 ?1222次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b>實(shí)例:【工具類封裝-<b class='flag-5'>http</b><b class='flag-5'>請(qǐng)求</b>】

    鴻蒙原生應(yīng)用開發(fā)-網(wǎng)絡(luò)管理HTTP數(shù)據(jù)請(qǐng)求

    ()方法,取消訂閱http響應(yīng)頭事件。 7.當(dāng)該請(qǐng)求使用完畢時(shí),調(diào)用destroy()方法主動(dòng)銷毀。 // 引入包名 import http from \'@ohos.net.http
    發(fā)表于 03-29 17:51

    鴻蒙原生應(yīng)用開發(fā)-網(wǎng)絡(luò)管理模塊總述

    一、網(wǎng)絡(luò)管理模塊主要提供以下功能: HTTP數(shù)據(jù)請(qǐng)求:通過HTTP發(fā)起一個(gè)
    發(fā)表于 04-08 09:45

    【HarmonyOS】網(wǎng)絡(luò)請(qǐng)求

    ://的,切記域名是不帶http://的,重要的事說三遍。Java原生訪問網(wǎng)絡(luò)由于鴻蒙系統(tǒng)支持Java開發(fā),所以我們可以直接使用Java原生的Api來進(jìn)行
    發(fā)表于 10-14 11:45

    http request請(qǐng)求不到接口數(shù)據(jù)是為什么?

    import http from '@ohos.net.http';export function doList() { const url const httpRequest
    發(fā)表于 04-25 10:15

    鴻蒙應(yīng)用開發(fā)請(qǐng)求不到數(shù)據(jù)是為什么?

    鴻蒙應(yīng)用開發(fā)請(qǐng)求不到數(shù)據(jù)
    發(fā)表于 06-15 11:04

    【學(xué)習(xí)打卡】OpenHarmony工具集之數(shù)據(jù)請(qǐng)求封裝·讓獲取數(shù)據(jù)變簡(jiǎn)單

    介紹開發(fā)OpenHarmony應(yīng)用程序時(shí)進(jìn)行數(shù)據(jù)請(qǐng)求,使用@ohos.net.http模塊,每次都需要?jiǎng)?chuàng)建一個(gè)http
    發(fā)表于 07-26 15:04

    HarmonyOS應(yīng)用API- HTTP數(shù)據(jù)請(qǐng)求

    import http from '@ohos.net.http';進(jìn)行數(shù)據(jù)請(qǐng)求// 每一個(gè)httpRequest對(duì)應(yīng)一個(gè)http
    發(fā)表于 10-11 15:47

    【中秋國(guó)慶不斷更】HarmonyOS網(wǎng)絡(luò)管理開發(fā)HTTP與WebSocket

    一、網(wǎng)絡(luò)管理開發(fā)概述 網(wǎng)絡(luò)管理模塊主要提供以下功能: ● ??HTTP
    發(fā)表于 09-27 15:40

    http請(qǐng)求 get post

    Http請(qǐng)求類 packagewzh.Http; importjava.io.BufferedReader; importjava.io.IOException
    發(fā)表于 09-27 10:36 ?16次下載

    OpenHarmony上使用的Http網(wǎng)絡(luò)框架教程

    簡(jiǎn)介 鴻蒙上使用的Http網(wǎng)絡(luò)框架,里面包含純Java實(shí)現(xiàn)的HttpNet,類似okhttp使用,支持同步和異步兩種請(qǐng)求方式;還有鴻蒙版re
    發(fā)表于 04-12 11:13 ?4次下載

    如何使用 ESP-AT實(shí)現(xiàn)HTTP請(qǐng)求

    ESP-AT作為樂鑫開發(fā)的可直接用于量產(chǎn)的物聯(lián)網(wǎng)應(yīng)用固件,可以簡(jiǎn)單完成網(wǎng)絡(luò)的連接,以及設(shè)備與服務(wù)器之間的數(shù)據(jù)傳輸。本文將介紹如何使用 ESP-AT實(shí)現(xiàn)HTTP
    的頭像 發(fā)表于 05-23 17:12 ?1158次閱讀
    如何使用 ESP-AT實(shí)現(xiàn)<b class='flag-5'>HTTP</b><b class='flag-5'>請(qǐng)求</b>

    鴻蒙OS開發(fā)實(shí)例:【窺探網(wǎng)絡(luò)請(qǐng)求

    HarmonyOS 平臺(tái)中使用網(wǎng)絡(luò)請(qǐng)求,需要引入 "@ohos.net.http", 并且需要在 module.json5 文件中申請(qǐng)網(wǎng)絡(luò)權(quán)限, 即 “
    的頭像 發(fā)表于 04-01 16:11 ?668次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b>實(shí)例:【窺探<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>請(qǐng)求</b>】

    鴻蒙OS開發(fā)實(shí)戰(zhàn):【網(wǎng)絡(luò)管理HTTP數(shù)據(jù)請(qǐng)求

    應(yīng)用通過HTTP發(fā)起一個(gè)數(shù)據(jù)請(qǐng)求,支持常見的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
    的頭像 發(fā)表于 04-01 16:31 ?600次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b>實(shí)戰(zhàn):【<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>管理</b><b class='flag-5'>HTTP</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>請(qǐng)求</b>】

    鴻蒙OS開發(fā)實(shí)例:【HarmonyHttpClient】網(wǎng)絡(luò)框架

    鴻蒙上使用的Http網(wǎng)絡(luò)框架,里面包含純Java實(shí)現(xiàn)的HttpNet,類似okhttp使用,支持同步和異步兩種請(qǐng)求方式;還有鴻蒙版retro
    的頭像 發(fā)表于 04-12 16:58 ?760次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b>實(shí)例:【HarmonyHttpClient】<b class='flag-5'>網(wǎng)絡(luò)</b>框架