我正在尝试做一个http post请求,我需要将主体指定为表单数据,因为服务器不将请求视为原始请求或params。
这是我试过的代码
** Future getApiResponse(url) async {
try {
// fetching data from the url
final response = await http.get(Uri.parse(url));
// checking status codes.
if (response.statusCode == 200 || response.statusCode == 201) {
responseJson = jsonDecode(response.body);
// log('$responseJson');
}
// debugPrint(response.body.toString());
} on SocketException {
throw FetchDataException(message: 'No internet connection');
}
return responseJson;
}
}
但这不管用。这是邮递员的要求
它不适用于帕姆斯。只在身体里。这是因为我想这是表格数据。如何使用HTTP在颤振中调用表单数据?
发布于 2022-10-18 20:51:13
对于HTTP,您可以尝试这样做
final uri = 'yourURL';
var map = new Map<String, dynamic>();
map['device-type'] = 'Android';
map['username'] = 'John';
map['password'] = '123456';
http.Response response = await http.post(
uri,
body: map,
);
我已经使用dio:^4.0.6创建了FormData和API调用。
//Create Formdata
formData = FormData.fromMap({
"username" : "John",
"password" : "123456",
"device-type" : "Android"
});
//API Call
final response = await (_dio.post(
yourURL,
data: formData,
cancelToken: cancelToken ?? _cancelToken,
options: options,
))
发布于 2022-10-18 20:52:30
首先,您不能通过GET
请求发送请求体(您必须使用POST/PUT
等)。您可以将Map
用于请求体作为form data
,因为http
包中的http
只有3种类型:String, List or Map
。就像这样:
var formDataMap = Map<String, dynamic>();
formDataMap['username'] = 'username';
formDataMap['password'] = 'password';
final response = await http.post(
Uri.parse('http/url/of/your/api'),
body: formDataMap,
);
log(response.body);
https://stackoverflow.com/questions/74119844
复制相似问题