2021-11-19 16:40:35 -08:00
# class: RequestOptions
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
* langs: java
2022-06-27 14:02:13 -07:00
The [RequestOptions] allows to create form data to be sent via [APIRequestContext]. Playwright will automatically
determine content type of the request.
2021-11-19 16:40:35 -08:00
```java
context.request().post(
"https://example.com/submit",
RequestOptions.create()
.setQueryParam("page", 1)
.setData("My data"));
```
2022-06-27 14:02:13 -07:00
**Uploading html form data**
[FormData] class can be used to send a form to the server, by default the request will use `application/x-www-form-urlencoded` encoding:
```java
context.request().post("https://example.com/signup", RequestOptions.create().setForm(
FormData.create()
.set("firstName", "John")
.set("lastName", "Doe")));
```
You can also send files as fields of an html form. The data will be encoded using [`multipart/form-data` ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST ):
```java
Path path = Paths.get("members.csv");
APIResponse response = context.request().post("https://example.com/upload_members",
RequestOptions.create().setMultipart(FormData.create().set("membersList", path)));
```
Alternatively, you can build the file payload manually:
```java
FilePayload filePayload = new FilePayload("members.csv", "text/csv",
"Alice, 33\nJohn, 35\n".getBytes(StandardCharsets.UTF_8));
APIResponse response = context.request().post("https://example.com/upload_members",
RequestOptions.create().setMultipart(FormData.create().set("membersList", filePayload)));
```
2021-11-19 16:40:35 -08:00
## method: RequestOptions.create
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
Creates new instance of [RequestOptions].
## method: RequestOptions.setData
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
Sets the request's post data.
### param: RequestOptions.setData.data
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `data` < [string]|[Buffer]|[Serializable]>
Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type` header will be
set to `application/octet-stream` if not explicitly set.
## method: RequestOptions.setFailOnStatusCode
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
### param: RequestOptions.setFailOnStatusCode.failOnStatusCode
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `failOnStatusCode` < [boolean]>
Whether to throw on response codes other than 2xx and 3xx. By default response object is returned
for all status codes.
## method: RequestOptions.setForm
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
Provides [FormData] object that will be serialized as html form using `application/x-www-form-urlencoded` encoding and sent as
this request body. If this parameter is specified `content-type` header will be set to `application/x-www-form-urlencoded`
unless explicitly provided.
### param: RequestOptions.setForm.form
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `form` < [FormData]>
Form data to be serialized as html form using `application/x-www-form-urlencoded` encoding and sent as
this request body.
## method: RequestOptions.setHeader
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
Sets an HTTP header to the request.
### param: RequestOptions.setHeader.name
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `name` < [string]>
Header name.
### param: RequestOptions.setHeader.value
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `value` < [string]>
Header value.
## method: RequestOptions.setIgnoreHTTPSErrors
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
### param: RequestOptions.setIgnoreHTTPSErrors.ignoreHTTPSErrors
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `ignoreHTTPSErrors` < [boolean]>
Whether to ignore HTTPS errors when sending network requests.
2022-09-09 13:25:36 -07:00
## method: RequestOptions.setMaxRedirects
* since: v1.26
- returns: < [RequestOptions]>
### param: RequestOptions.setMaxRedirects.maxRedirects
* since: v1.26
- `maxRedirects` < [int]>
Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is exceeded.
Defaults to `20` . Pass `0` to not follow redirects.
2021-11-19 16:40:35 -08:00
## method: RequestOptions.setMethod
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
Changes the request method (e.g. [PUT ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT ) or
[POST ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST )).
### param: RequestOptions.setMethod.method
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `method` < [string]>
Request method, e.g. [POST ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST ).
## method: RequestOptions.setMultipart
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
Provides [FormData] object that will be serialized as html form using `multipart/form-data` encoding and sent as
this request body. If this parameter is specified `content-type` header will be set to `multipart/form-data`
unless explicitly provided.
### param: RequestOptions.setMultipart.form
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `form` < [FormData]>
Form data to be serialized as html form using `multipart/form-data` encoding and sent as
this request body.
## method: RequestOptions.setQueryParam
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
Adds a query parameter to the request URL.
### param: RequestOptions.setQueryParam.name
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `name` < [string]>
Parameter name.
### param: RequestOptions.setQueryParam.value
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `value` < [string]|[boolean]|[int]>
Parameter value.
## method: RequestOptions.setTimeout
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- returns: < [RequestOptions]>
Sets request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
### param: RequestOptions.setTimeout.timeout
2022-07-05 16:24:50 -08:00
* since: v1.18
2021-11-19 16:40:35 -08:00
- `timeout` < [float]>
Request timeout in milliseconds.