Как установить метод flutter POST с помощью DIO?
Это мой код ниже, я застрял, пожалуйста, помогите. Как установить метод flutter POST с помощью DIO?
Map<String, dynamic> toJson() {
return {
'id': id,
"name": name,
"telNumber": telNumber,
"email": email,
"age": age
};
}
String postToJson(Post data){
final dyn = data.toJson();
return json.encode(dyn);
}
Future<http.Response> createPost(Post post) async {
final response = await http.post(
"$baseUrl/users",
headers: {
"content-type": "application"
},
body: postToJson(post));
return response;
}
Этот метод работает в http
3 ответа
BaseOptions options = new BaseOptions(
baseUrl: $baseUrl,
connectTimeout: 10000,
receiveTimeout: 10000,);
final dioClient = Dio(options);
try{
final response = await dioClient.post("/users", data: FormData.fromMap(
postToJson(post))
),);
return response;
} catch (e) {
throw (e);
}
Поместите этот код в функцию
Экземпляр Dio предоставляет метод POST, где мы можем передать параметр в формате JOSN
Выполнение запроса POST:
Dio dio = Dio();
void postHTTP(String url, Map data) async {
try {
Response response = await dio.post(url, data: data);
// Do whatever
} on DioError catch (e) {
// Do whatever
}
}
Чтобы отправить данные формы, мы можем использовать экземпляр FormData и передать значения сопоставления ключей и указать, куда вы хотите отправить данные.
Большинство приложений нужно отправить
files/images
к серверу как
multipart/form-data
и этого очень легко достичь с помощью Dio, поскольку в пакете Dio доступны все классы и методы.
Отправка FormData:
// Single File with Additional Data
FormData formData = FormData.fromMap({
"name": "Ryan Dsilva",
"age": 21,
"file": await MultipartFile.fromFile("PATH", filename:"OPTIONAL"),
});
// Multiple Files with Additional Data
FormData formData = FormData.fromMap({
"name": "Ryan Dsilva",
"age": 21,
"files": [
await MultipartFile.fromFile("PATH", filename:"OPTIONAL"),
MultipartFile.fromFileSync("PATH", filename:"OPTIONAL")
],
});
var response = await dio.post('/info', data: formData);
Вы можете создать новую функцию и вызвать ее откуда угодно:
Future<Null> SendPost() async {
Response response;
BaseOptions options = new BaseOptions(
baseUrl: "https://your.url",
connectTimeout: 6000,
receiveTimeout: 3000,
);
Dio dio = new Dio(options);
FormData formData = new FormData.fromMap({
"post_data1": value,
"post_data2": value,
});
try {
response=await dio.post("/page.php", data: formData);
return response;
} catch (e) {
print('Error: $e');
}
}