/*
* Copyright (c) 2021-2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {AsyncCallback, Callback} from "./basic";
import connection from "./@ohos.net.connection";
/**
* Provides http related APIs.
* @namespace http
* @syscap SystemCapability.Communication.NetStack
* @since 6
*/
declare namespace http {
/**
* @since 10
*/
type HttpProxy = connection.HttpProxy;
/**
* Creates an HTTP request task.
* @returns { HttpRequest } the HttpRequest of the createHttp.
* @crossplatform
* @syscap SystemCapability.Communication.NetStack
* @since 6
*/
function createHttp(): HttpRequest;
/**
* Specifies the type and value range of the optional parameters in the HTTP request.
* @interface HttpRequestOptions
* @syscap SystemCapability.Communication.NetStack
* @since 6
*/
export interface HttpRequestOptions {
/**
* Request method,default is GET.
* @type {RequestMethod}
* @crossplatform
* @since 6
*/
method?: RequestMethod;
/**
* Additional data of the request.
* extraData can be a string or an Object (API 6) or an ArrayBuffer(API 8).
* @type {string | Object | ArrayBuffer}
* @crossplatform
* @since 6
*/
extraData?: string | Object | ArrayBuffer;
/**
* Data type to be returned. If this parameter is set, the system preferentially returns the specified type.
* @type {HttpDataType}
* @crossplatform
* @since 9
*/
expectDataType?: HttpDataType;
/**
* default is true
* @type {boolean}
* @crossplatform
* @since 9
*/
usingCache?: boolean;
/**
* [1, 1000], default is 1.
* @type {number}
* @crossplatform
* @since 9
*/
priority?: number;
/**
* HTTP request header. default is 'content-type': 'application/json'
* @type {Object}
* @crossplatform
* @since 6
*/
header?: Object;
/**
* Read timeout period. The default value is 60,000, in ms.
* @type {number}
* @crossplatform
* @since 6
*/
readTimeout?: number;
/**
* Connection timeout interval. The default value is 60,000, in ms.
* @type {number}
* @crossplatform
* @since 6
*/
connectTimeout?: number;
/**
* default is automatically specified by the system.
* @type {HttpProtocol}
* @crossplatform
* @since 9
*/
usingProtocol?: HttpProtocol;
/**
* If this parameter is set as type of boolean, the system will use default proxy or not use proxy.
* If this parameter is set as type of HttpProxy, the system will use the specified HttpProxy.
* @type {boolean | HttpProxy}
* @since 10
*/
usingProxy?: boolean | HttpProxy;
/**
* If this parameter is set, the system will use ca path specified by user, or else use preset ca by the system.
* @type {string}
* @since 10
*/
caPath?: string;
}
/**
*
Defines an HTTP request task. Before invoking APIs provided by HttpRequest,
* you must call createHttp() to create an HttpRequestTask object.
* @interface HttpRequest
* @syscap SystemCapability.Communication.NetStack
* @since 6
*/
export interface HttpRequest {
/**
* Initiates an HTTP request to a given URL.
* @param { string } url URL for initiating an HTTP request.
* @param { AsyncCallback } callback - the callback of request.
* @permission ohos.permission.INTERNET
* @throws { BusinessError } 401 - Parameter error.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 2300001 - Unsupported protocol.
* @throws { BusinessError } 2300003 - URL using bad/illegal format or missing URL.
* @throws { BusinessError } 2300005 - Couldn't resolve proxy name.
* @throws { BusinessError } 2300006 - Couldn't resolve host name.
* @throws { BusinessError } 2300007 - Couldn't connect to server.
* @throws { BusinessError } 2300008 - Weird server reply.
* @throws { BusinessError } 2300009 - Access denied to remote resource.
* @throws { BusinessError } 2300016 - Error in the HTTP2 framing layer.
* @throws { BusinessError } 2300018 - Transferred a partial file.
* @throws { BusinessError } 2300023 - Failed writing received data to disk/application.
* @throws { BusinessError } 2300025 - Upload failed.
* @throws { BusinessError } 2300026 - Failed to open/read local data from file/application.
* @throws { BusinessError } 2300027 - Out of memory.
* @throws { BusinessError } 2300028 - Timeout was reached.
* @throws { BusinessError } 2300047 - Number of redirects hit maximum amount.
* @throws { BusinessError } 2300052 - Server returned nothing (no headers, no data).
* @throws { BusinessError } 2300055 - Failed sending data to the peer.
* @throws { BusinessError } 2300056 - Failure when receiving data from the peer.
* @throws { BusinessError } 2300058 - Problem with the local SSL certificate.
* @throws { BusinessError } 2300059 - Couldn't use specified SSL cipher.
* @throws { BusinessError } 2300060 - SSL peer certificate or SSH remote key was not OK.
* @throws { BusinessError } 2300061 - Unrecognized or bad HTTP Content or Transfer-Encoding.
* @throws { BusinessError } 2300063 - Maximum file size exceeded.
* @throws { BusinessError } 2300070 - Disk full or allocation exceeded.
* @throws { BusinessError } 2300073 - Remote file already exists.
* @throws { BusinessError } 2300077 - Problem with the SSL CA cert (path? access rights?).
* @throws { BusinessError } 2300078 - Remote file not found.
* @throws { BusinessError } 2300094 - An authentication function returned an error.
* @throws { BusinessError } 2300999 - Unknown Other Error.
* @syscap SystemCapability.Communication.NetStack
* @crossplatform
* @since 6
*/
request(url: string, callback: AsyncCallback): void;
/**
* Initiates an HTTP request to a given URL.
* @param { string } url URL for initiating an HTTP request.
* @param { HttpRequestOptions } options Optional parameters {@link HttpRequestOptions}.
* @param { AsyncCallback } callback callback - the callback of request..
* @permission ohos.permission.INTERNET
* @throws { BusinessError } 401 - Parameter error.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 2300001 - Unsupported protocol.
* @throws { BusinessError } 2300003 - URL using bad/illegal format or missing URL.
* @throws { BusinessError } 2300005 - Couldn't resolve proxy name.
* @throws { BusinessError } 2300006 - Couldn't resolve host name.
* @throws { BusinessError } 2300007 - Couldn't connect to server.
* @throws { BusinessError } 2300008 - Weird server reply.
* @throws { BusinessError } 2300009 - Access denied to remote resource.
* @throws { BusinessError } 2300016 - Error in the HTTP2 framing layer.
* @throws { BusinessError } 2300018 - Transferred a partial file.
* @throws { BusinessError } 2300023 - Failed writing received data to disk/application.
* @throws { BusinessError } 2300025 - Upload failed.
* @throws { BusinessError } 2300026 - Failed to open/read local data from file/application.
* @throws { BusinessError } 2300027 - Out of memory.
* @throws { BusinessError } 2300028 - Timeout was reached.
* @throws { BusinessError } 2300047 - Number of redirects hit maximum amount.
* @throws { BusinessError } 2300052 - Server returned nothing (no headers, no data).
* @throws { BusinessError } 2300055 - Failed sending data to the peer.
* @throws { BusinessError } 2300056 - Failure when receiving data from the peer.
* @throws { BusinessError } 2300058 - Problem with the local SSL certificate.
* @throws { BusinessError } 2300059 - Couldn't use specified SSL cipher.
* @throws { BusinessError } 2300060 - SSL peer certificate or SSH remote key was not OK.
* @throws { BusinessError } 2300061 - Unrecognized or bad HTTP Content or Transfer-Encoding.
* @throws { BusinessError } 2300063 - Maximum file size exceeded.
* @throws { BusinessError } 2300070 - Disk full or allocation exceeded.
* @throws { BusinessError } 2300073 - Remote file already exists.
* @throws { BusinessError } 2300077 - Problem with the SSL CA cert (path? access rights?).
* @throws { BusinessError } 2300078 - Remote file not found.
* @throws { BusinessError } 2300094 - An authentication function returned an error.
* @throws { BusinessError } 2300999 - Unknown Other Error.
* @syscap SystemCapability.Communication.NetStack
* @crossplatform
* @since 6
*/
request(url: string, options: HttpRequestOptions, callback: AsyncCallback): void;
/**
* Initiates an HTTP request to a given URL.
* @param { string } url URL for initiating an HTTP request.
* @param { HttpRequestOptions } options Optional parameters {@link HttpRequestOptions}.
* @returns { Promise } The promise returned by the function.
* @permission ohos.permission.INTERNET
* @throws { BusinessError } 401 - Parameter error.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 2300001 - Unsupported protocol.
* @throws { BusinessError } 2300003 - URL using bad/illegal format or missing URL.
* @throws { BusinessError } 2300005 - Couldn't resolve proxy name.
* @throws { BusinessError } 2300006 - Couldn't resolve host name.
* @throws { BusinessError } 2300007 - Couldn't connect to server.
* @throws { BusinessError } 2300008 - Weird server reply.
* @throws { BusinessError } 2300009 - Access denied to remote resource.
* @throws { BusinessError } 2300016 - Error in the HTTP2 framing layer.
* @throws { BusinessError } 2300018 - Transferred a partial file.
* @throws { BusinessError } 2300023 - Failed writing received data to disk/application.
* @throws { BusinessError } 2300025 - Upload failed.
* @throws { BusinessError } 2300026 - Failed to open/read local data from file/application.
* @throws { BusinessError } 2300027 - Out of memory.
* @throws { BusinessError } 2300028 - Timeout was reached.
* @throws { BusinessError } 2300047 - Number of redirects hit maximum amount.
* @throws { BusinessError } 2300052 - Server returned nothing (no headers, no data).
* @throws { BusinessError } 2300055 - Failed sending data to the peer.
* @throws { BusinessError } 2300056 - Failure when receiving data from the peer.
* @throws { BusinessError } 2300058 - Problem with the local SSL certificate.
* @throws { BusinessError } 2300059 - Couldn't use specified SSL cipher.
* @throws { BusinessError } 2300060 - SSL peer certificate or SSH remote key was not OK.
* @throws { BusinessError } 2300061 - Unrecognized or bad HTTP Content or Transfer-Encoding.
* @throws { BusinessError } 2300063 - Maximum file size exceeded.
* @throws { BusinessError } 2300070 - Disk full or allocation exceeded.
* @throws { BusinessError } 2300073 - Remote file already exists.
* @throws { BusinessError } 2300077 - Problem with the SSL CA cert (path? access rights?).
* @throws { BusinessError } 2300078 - Remote file not found.
* @throws { BusinessError } 2300094 - An authentication function returned an error.
* @throws { BusinessError } 2300999 - Unknown Other Error.
* @syscap SystemCapability.Communication.NetStack
* @crossplatform
* @since 6
*/
request(url: string, options?: HttpRequestOptions): Promise;
/**
* Initiates an HTTP request to a given URL, applicable to scenarios where http response supports streaming.
* @param { string } url URL for initiating an HTTP request.
*
@param { AsyncCallback } callback Returns the callback of requestInStream {@link ResponseCode},
* should use on_headersReceive and on_dataReceive to get http response.
* @permission ohos.permission.INTERNET
* @throws { BusinessError } 401 - Parameter error.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 2300001 - Unsupported protocol.
* @throws { BusinessError } 2300003 - URL using bad/illegal format or missing URL.
* @throws { BusinessError } 2300005 - Couldn't resolve proxy name.
* @throws { BusinessError } 2300006 - Couldn't resolve host name.
* @throws { BusinessError } 2300007 - Couldn't connect to server.
* @throws { BusinessError } 2300008 - Weird server reply.
* @throws { BusinessError } 2300009 - Access denied to remote resource.
* @throws { BusinessError } 2300016 - Error in the HTTP2 framing layer.
* @throws { BusinessError } 2300018 - Transferred a partial file.
* @throws { BusinessError } 2300023 - Failed writing received data to disk/application.
* @throws { BusinessError } 2300025 - Upload failed.
* @throws { BusinessError } 2300026 - Failed to open/read local data from file/application.
* @throws { BusinessError } 2300027 - Out of memory.
* @throws { BusinessError } 2300028 - Timeout was reached.
* @throws { BusinessError } 2300047 - Number of redirects hit maximum amount.
* @throws { BusinessError } 2300052 - Server returned nothing (no headers, no data).
* @throws { BusinessError } 2300055 - Failed sending data to the peer.
* @throws { BusinessError } 2300056 - Failure when receiving data from the peer.
* @throws { BusinessError } 2300058 - Problem with the local SSL certificate.
* @throws { BusinessError } 2300059 - Couldn't use specified SSL cipher.
* @throws { BusinessError } 2300060 - SSL peer certificate or SSH remote key was not OK.
* @throws { BusinessError } 2300061 - Unrecognized or bad HTTP Content or Transfer-Encoding.
* @throws { BusinessError } 2300063 - Maximum file size exceeded.
* @throws { BusinessError } 2300070 - Disk full or allocation exceeded.
* @throws { BusinessError } 2300073 - Remote file already exists.
* @throws { BusinessError } 2300077 - Problem with the SSL CA cert (path? access rights?).
* @throws { BusinessError } 2300078 - Remote file not found.
* @throws { BusinessError } 2300094 - An authentication function returned an error.
* @throws { BusinessError } 2300999 - Unknown Other Error.
* @syscap SystemCapability.Communication.NetStack
* @since 10
*/
requestInStream(url: string, callback: AsyncCallback): void;
/**
* Initiates an HTTP request to a given URL, applicable to scenarios where http response supports streaming.
* @param { string } url URL for initiating an HTTP request.
* @param { HttpRequestOptions } options Optional parameters {@link HttpRequestOptions}.
* @param { AsyncCallback } callback - the callback of requestInStream.
* @permission ohos.permission.INTERNET
* @throws { BusinessError } 401 - Parameter error.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 2300001 - Unsupported protocol.
* @throws { BusinessError } 2300003 - URL using bad/illegal format or missing URL.
* @throws { BusinessError } 2300005 - Couldn't resolve proxy name.
* @throws { BusinessError } 2300006 - Couldn't resolve host name.
* @throws { BusinessError } 2300007 - Couldn't connect to server.
* @throws { BusinessError } 2300008 - Weird server reply.
* @throws { BusinessError } 2300009 - Access denied to remote resource.
* @throws { BusinessError } 2300016 - Error in the HTTP2 framing layer.
* @throws { BusinessError } 2300018 - Transferred a partial file.
* @throws { BusinessError } 2300023 - Failed writing received data to disk/application.
* @throws { BusinessError } 2300025 - Upload failed.
* @throws { BusinessError } 2300026 - Failed to open/read local data from file/application.
* @throws { BusinessError } 2300027 - Out of memory.
* @throws { BusinessError } 2300028 - Timeout was reached.
* @throws { BusinessError } 2300047 - Number of redirects hit maximum amount.
* @throws { BusinessError } 2300052 - Server returned nothing (no headers, no data).
* @throws { BusinessError } 2300055 - Failed sending data to the peer.
* @throws { BusinessError } 2300056 - Failure when receiving data from the peer.
* @throws { BusinessError } 2300058 - Problem with the local SSL certificate.
* @throws { BusinessError } 2300059 - Couldn't use specified SSL cipher.
* @throws { BusinessError } 2300060 - SSL peer certificate or SSH remote key was not OK.
* @throws { BusinessError } 2300061 - Unrecognized or bad HTTP Content or Transfer-Encoding.
* @throws { BusinessError } 2300063 - Maximum file size exceeded.
* @throws { BusinessError } 2300070 - Disk full or allocation exceeded.
* @throws { BusinessError } 2300073 - Remote file already exists.
* @throws { BusinessError } 2300077 - Problem with the SSL CA cert (path? access rights?).
* @throws { BusinessError } 2300078 - Remote file not found.
* @throws { BusinessError } 2300094 - An authentication function returned an error.
* @throws { BusinessError } 2300999 - Unknown Other Error.
* @syscap SystemCapability.Communication.NetStack
* @since 10
*/
requestInStream(url: string, options: HttpRequestOptions, callback: AsyncCallback): void;
/**
* Initiates an HTTP request to a given URL, applicable to scenarios where http response supports streaming.
* @param { string } url URL for initiating an HTTP request.
* @param { HttpRequestOptions } options Optional parameters {@link HttpRequestOptions}.
* @returns { Promise } the promise returned by the function.
* @permission ohos.permission.INTERNET
* @throws { BusinessError } 401 - Parameter error.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 2300001 - Unsupported protocol.
* @throws { BusinessError } 2300003 - URL using bad/illegal format or missing URL.
* @throws { BusinessError } 2300005 - Couldn't resolve proxy name.
* @throws { BusinessError } 2300006 - Couldn't resolve host name.
* @throws { BusinessError } 2300007 - Couldn't connect to server.
* @throws { BusinessError } 2300008 - Weird server reply.
* @throws { BusinessError } 2300009 - Access denied to remote resource.
* @throws { BusinessError } 2300016 - Error in the HTTP2 framing layer.
* @throws { BusinessError } 2300018 - Transferred a partial file.
* @throws { BusinessError } 2300023 - Failed writing received data to disk/application.
* @throws { BusinessError } 2300025 - Upload failed.
* @throws { BusinessError } 2300026 - Failed to open/read local data from file/application.
* @throws { BusinessError } 2300027 - Out of memory.
* @throws { BusinessError } 2300028 - Timeout was reached.
* @throws { BusinessError } 2300047 - Number of redirects hit maximum amount.
* @throws { BusinessError } 2300052 - Server returned nothing (no headers, no data).
* @throws { BusinessError } 2300055 - Failed sending data to the peer.
* @throws { BusinessError } 2300056 - Failure when receiving data from the peer.
* @throws { BusinessError } 2300058 - Problem with the local SSL certificate.
* @throws { BusinessError } 2300059 - Couldn't use specified SSL cipher.
* @throws { BusinessError } 2300060 - SSL peer certificate or SSH remote key was not OK.
* @throws { BusinessError } 2300061 - Unrecognized or bad HTTP Content or Transfer-Encoding.
* @throws { BusinessError } 2300063 - Maximum file size exceeded.
* @throws { BusinessError } 2300070 - Disk full or allocation exceeded.
* @throws { BusinessError } 2300073 - Remote file already exists.
* @throws { BusinessError } 2300077 - Problem with the SSL CA cert (path? access rights?).
* @throws { BusinessError } 2300078 - Remote file not found.
* @throws { BusinessError } 2300094 - An authentication function returned an error.
* @throws { BusinessError } 2300999 - Unknown Other Error.
* @syscap SystemCapability.Communication.NetStack
* @since 10
*/
requestInStream(url: string, options?: HttpRequestOptions): Promise;
/**
* Destroys an HTTP request.
* @syscap SystemCapability.Communication.NetStack
* @crossplatform
*/
destroy(): void;
/**
* Registers an observer for HTTP Response Header events.
* @param { string } type Indicates Event name.
* @param { AsyncCallback