js-apis-system-fetch.md 4.8 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
# Data Request

> ![icon-note.gif](public_sys-resources/icon-note.gif) **Note:**
> - The APIs of this module are no longer maintained since API version 6. It is recommended that you use [`@ohos.net.http`](js-apis-http.md) instead.
> 
> - The initial APIs of this module are supported since API version 3. Newly added APIs will be marked with a superscript to indicate their earliest API version.


## Modules to Import


```
import fetch from '@system.fetch';
```


## fetch.fetch

fetch(Object): void

Obtains data through a network.

**Required permissions:** ohos.permission.INTERNET

**System capability**: SystemCapability.Communication.NetStack

**Parameters**

| Name | Type | Mandatory | Description |
| -------- | -------- | -------- | -------- |
| url | string | Yes | Resource URL. |
| data | string \| Object | No | Request parameter, which can be a string or a JSON object. For details, see Relationship between data and Content-Type. |
| header | Object | No | Request header. |
| method | string | No | Request method. The default value is **GET**. The value can be **OPTIONS**, **GET**, **HEAD**, **POST**, **PUT**, **DELETE **or **TRACE**. |
| responseType | string | No | Response type. The return type can be text or JSON. By default, the return type is determined based on **Content-Type** in the header returned by the server. For details, see return values of the success callback. |
| success | Function | No | Called when the network data is obtained successfully. |
| fail | Function | No | Called when the network data fails to be obtained. |
| complete | Function | No | Called when the execution is complete. |

  **Table1** Relationship between data and Content-Type

| data | Content-Type | Description |
| -------- | -------- | -------- |
| string | Not set | The default value of Content-Type is text/plain, and the value of data is used as the request body. |
| string | Any type | The value of data is used as the request body. |
| Object | Not set | The default value of **Content-Type** is **application/x-www-form-urlencoded**. The **data** value is encoded based on the URL rule and appended in the request body. |
| Object | application/x-www-form-urlencoded | The value of data is encoded based on the URL rule and is used as the request body. |

The following values will be returned when data is successfully obtained.

| Parameter | Type | Description |
| -------- | -------- | -------- |
| code | number | Server status code. |
| data | string \| Object | The type of the returned data is determined by **responseType**. For details, see Relationship between responseType and data returned by the success function. |
| headers | Object | All headers in the response from the server. |

  **Table2** Relationship between responseType and data returned by the success function

| responseType | data | Description |
| -------- | -------- | -------- |
| N/A | string | When the type in the header returned by the server is **text/\***, **application/json**, **application/javascript**, or **application/xml**, the value is the text content. |
| text | string | Text content. |
| json | Object | A JSON object. |

**Example**

```
export default {
  data: {
    responseData: 'NA',
    url: "test_url",
  },
  fetch: function () {
    var that = this;
    fetch.fetch({
      url: that.url,
      success: function(response) {
        console.info("fetch success");
        that.responseData = JSON.stringify(response);
      },
      fail: function() {
        console.info("fetch fail");
      }
    });
  }
}
```


> ![icon-note.gif](public_sys-resources/icon-note.gif) **Note:**
>   HTTPS is supported by default. To support HTTP, you need to add **"network"** to the **config.json** file, and set the attribute **"cleartextTraffic"** to **true**. 
>   
> ```
> {
>   "deviceConfig": {
>     "default": {
>       "network": {
>         "cleartextTraffic": true
>       }
>       ...
>     }
>   }
>   ...
> }
> ```