數(shù)據(jù)請(qǐng)求
說(shuō)明:
開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
本模塊首批接口從API version 6開(kāi)始支持。后續(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開(kāi)始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) = > {
console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(
// 填寫(xiě)http請(qǐng)求的url地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開(kāi)發(fā)者自定義。請(qǐng)求的參數(shù)可以在extraData中指定
"EXAMPLE_URL",
{
method: http.RequestMethod.POST, // 可選,默認(rèn)為http.RequestMethod.GET
// 開(kāi)發(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)銷(xiāo)毀。
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
返回值:
類(lèi)型 | 說(shuō)明 |
---|---|
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的方法前,需要先通過(guò)[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ù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
url | string | 是 | 發(fā)起網(wǎng)絡(luò)請(qǐng)求的URL地址。 |
callback | AsyncCallback<[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ù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
url | string | 是 | 發(fā)起網(wǎng)絡(luò)請(qǐng)求的URL地址。 |
options | HttpRequestOptions | 是 | 參考[HttpRequestOptions]。 |
callback | AsyncCallback<[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ù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
url | string | 是 | 發(fā)起網(wǎng)絡(luò)請(qǐng)求的URL地址。 |
options | HttpRequestOptions | 是 | 參考[HttpRequestOptions]。 |
返回值:
類(lèi)型 | 說(shuō)明 |
---|---|
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 事件。
說(shuō)明: 此接口已廢棄,建議使用[on('headersReceive')8+]替代。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類(lèi)型,'headerReceive'。 |
callback | AsyncCallback | 是 | 回調(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 事件。
說(shuō)明:
- 此接口已廢棄,建議使用[off('headersReceive')8+]替代。
- 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 取消訂閱的事件類(lèi)型,'headerReceive'。 |
callback | AsyncCallback | 否 | 回調(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ù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類(lèi)型:'headersReceive'。 |
callback | Callback | 是 | 回調(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 事件。
說(shuō)明: 可以指定傳入on中的callback取消一個(gè)訂閱,也可以不指定callback清空所有訂閱。
系統(tǒng)能力 :SystemCapability.Communication.NetStack
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 取消訂閱的事件類(lèi)型:'headersReceive'。 |
callback | Callback | 否 | 回調(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ù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
type | string | 是 | 訂閱的事件類(lèi)型:'headersReceive'。 |
callback | Callback | 是 | 回調(diào)函數(shù)。 |
示例:
httpRequest.once('headersReceive', (header) = > {
console.info('header: ' + JSON.stringify(header));
});
HttpRequestOptions
發(fā)起請(qǐng)求可選參數(shù)的類(lèi)型和取值范圍。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
method | [RequestMethod] | 否 | 請(qǐng)求方式。 |
extraData | string | Object | ArrayBuffer8+ |
header | Object | 否 | HTTP請(qǐng)求頭字段。默認(rèn){'Content-Type': 'application/json'}。 |
readTimeout | number | 否 | 讀取超時(shí)時(shí)間。單位為毫秒(ms),默認(rèn)為60000ms。 |
connectTimeout | number | 否 | 連接超時(shí)時(shí)間。單位為毫秒(ms),默認(rèn)為60000ms。 |
RequestMethod
HTTP 請(qǐng)求方法。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱(chēng) | 值 | 說(shuō)明 |
---|---|---|
OPTIONS | OPTIONS | HTTP 請(qǐng)求 OPTIONS。 |
GET | GET | HTTP 請(qǐng)求 GET。 |
HEAD | HEAD | HTTP 請(qǐng)求 HEAD。 |
POST | POST | HTTP 請(qǐng)求 POST。 |
PUT | PUT | HTTP 請(qǐng)求 PUT。 |
DELETE | DELETE | HTTP 請(qǐng)求 DELETE。 |
TRACE | TRACE | HTTP 請(qǐng)求 TRACE。 |
CONNECT | CONNECT | HTTP 請(qǐng)求 CONNECT。 |
ResponseCode
發(fā)起請(qǐng)求返回的響應(yīng)碼。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
名稱(chēng) | 值 | 說(shuō)明 |
---|---|---|
OK | 200 | 請(qǐng)求成功。一般用于GET與POST請(qǐng)求。 |
CREATED | 201 | 已創(chuàng)建。成功請(qǐng)求并創(chuàng)建了新的資源。 |
ACCEPTED | 202 | 已接受。已經(jīng)接受請(qǐng)求,但未處理完成。 |
NOT_AUTHORITATIVE | 203 | 非授權(quán)信息。請(qǐng)求成功。 |
NO_CONTENT | 204 | 無(wú)內(nèi)容。服務(wù)器成功處理,但未返回內(nèi)容。 |
RESET | 205 | 重置內(nèi)容。 |
PARTIAL | 206 | 部分內(nèi)容。服務(wù)器成功處理了部分GET請(qǐng)求。 |
MULT_CHOICE | 300 | 多種選擇。 |
MOVED_PERM | 301 | 永久移動(dòng)。請(qǐng)求的資源已被永久的移動(dòng)到新URI,返回信息會(huì)包括新的URI,瀏覽器會(huì)自動(dòng)定向到新URI。 |
MOVED_TEMP | 302 | 臨時(shí)移動(dòng)。 |
SEE_OTHER | 303 | 查看其它地址。 |
NOT_MODIFIED | 304 | 未修改。 |
USE_PROXY | 305 | 使用代理。 |
BAD_REQUEST | 400 | 客戶(hù)端請(qǐng)求的語(yǔ)法錯(cuò)誤,服務(wù)器無(wú)法理解。 |
UNAUTHORIZED | 401 | 請(qǐng)求要求用戶(hù)的身份認(rèn)證。 |
PAYMENT_REQUIRED | 402 | 保留,將來(lái)使用。 |
FORBIDDEN | 403 | 服務(wù)器理解請(qǐng)求客戶(hù)端的請(qǐng)求,但是拒絕執(zhí)行此請(qǐng)求。 |
NOT_FOUND | 404 | 服務(wù)器無(wú)法根據(jù)客戶(hù)端的請(qǐng)求找到資源(網(wǎng)頁(yè))。 |
BAD_METHOD | 405 | 客戶(hù)端請(qǐng)求中的方法被禁止。 |
NOT_ACCEPTABLE | 406 | 服務(wù)器無(wú)法根據(jù)客戶(hù)端請(qǐng)求的內(nèi)容特性完成請(qǐng)求。 |
PROXY_AUTH | 407 | 請(qǐng)求要求代理的身份認(rèn)證。 |
CLIENT_TIMEOUT | 408 | 請(qǐng)求時(shí)間過(guò)長(zhǎng),超時(shí)。 |
CONFLICT | 409 | 服務(wù)器完成客戶(hù)端的PUT請(qǐng)求是可能返回此代碼,服務(wù)器處理請(qǐng)求時(shí)發(fā)生了沖突。 |
GONE | 410 | 客戶(hù)端請(qǐng)求的資源已經(jīng)不存在。 |
LENGTH_REQUIRED | 411 | 服務(wù)器無(wú)法處理客戶(hù)端發(fā)送的不帶Content-Length的請(qǐng)求信息。 |
PRECON_FAILED | 412 | 客戶(hù)端請(qǐng)求信息的先決條件錯(cuò)誤。 |
ENTITY_TOO_LARGE | 413 | 由于請(qǐng)求的實(shí)體過(guò)大,服務(wù)器無(wú)法處理,因此拒絕請(qǐng)求。 |
REQ_TOO_LONG | 414 | 請(qǐng)求的URI過(guò)長(zhǎng)(URI通常為網(wǎng)址),服務(wù)器無(wú)法處理。 |
UNSUPPORTED_TYPE | 415 | 服務(wù)器無(wú)法處理請(qǐng)求的格式。 |
INTERNAL_ERROR | 500 | 服務(wù)器內(nèi)部錯(cuò)誤,無(wú)法完成請(qǐng)求。 |
NOT_IMPLEMENTED | 501 | 服務(wù)器不支持請(qǐng)求的功能,無(wú)法完成請(qǐng)求。 |
BAD_GATEWAY | 502 | 充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,從遠(yuǎn)端服務(wù)器接收到了一個(gè)無(wú)效的請(qǐng)求。 |
UNAVAILABLE | 503 | 由于超載或系統(tǒng)維護(hù),服務(wù)器暫時(shí)的無(wú)法處理客戶(hù)端的請(qǐng)求。 |
GATEWAY_TIMEOUT | 504 | 充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,未及時(shí)從遠(yuǎn)端服務(wù)器獲取請(qǐng)求。 |
VERSION | 505 | 服務(wù)器請(qǐng)求的HTTP協(xié)議的版本。HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
HttpResponse
request方法回調(diào)函數(shù)的返回值類(lèi)型。
系統(tǒng)能力 :以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Communication.NetStack。
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
result | string | Object | ArrayBuffer8+ |
responseCode | [ResponseCode] | number | 是 |
header | Object | 是 | 發(fā)起http請(qǐng)求返回來(lái)的響應(yīng)頭。當(dāng)前返回的是JSON格式字符串,如需具體字段內(nèi)容,需開(kāi)發(fā)者自行解析。常見(jiàn)字段及解析方式如下: - Content-Type:header['Content-Type']; - Status-Line:header['Status-Line']; - Date:header.Date/header['Date']; - Server:header.Server/header['Server']; |
cookies8+ | Array | 是 | 服務(wù)器返回的 cookies。 |
審核編輯 黃宇
-
鴻蒙
+關(guān)注
關(guān)注
57文章
2368瀏覽量
42897
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論