postFormData static method
Makes a server POST request with the specified data encoded as form data.
This is roughly the POST equivalent of getString. This method is similar to sending a FormData object with broader browser support but limited to String values.
If data
is supplied, the key/value pairs are URI encoded with
Uri.encodeQueryComponent and converted into an HTTP query string.
Unless otherwise specified, this method appends the following header:
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Here's an example of using this method:
var data = { 'firstName' : 'John', 'lastName' : 'Doe' };
HttpRequest.postFormData('/send', data).then((HttpRequest resp) {
// Do something with the response.
});
See also:
Implementation
static Future<HttpRequest> postFormData(String url, Map<String, String> data,
{bool? withCredentials,
String? responseType,
Map<String, String>? requestHeaders,
void onProgress(ProgressEvent e)?}) {
var parts = [];
data.forEach((key, value) {
parts.add('${Uri.encodeQueryComponent(key)}='
'${Uri.encodeQueryComponent(value)}');
});
var formData = parts.join('&');
if (requestHeaders == null) {
requestHeaders = <String, String>{};
}
requestHeaders.putIfAbsent('Content-Type',
() => 'application/x-www-form-urlencoded; charset=UTF-8');
return request(url,
method: 'POST',
withCredentials: withCredentials,
responseType: responseType,
requestHeaders: requestHeaders,
sendData: formData,
onProgress: onProgress);
}