我想发布一个请求。我已经对 json 文件进行了编码,并将内容类型定义为 application/json,但仍然收到代码 400。由于我是 flutter 新手,我无法理解我在哪里犯了错误。 我想向该网址发送请求。我已经对 json 进行了编码,并定义了内容的类型。但我不知道为什么会收到错误 400 代码。代码中也给出了我想要发布请求的地址。我认为我没有犯任何语法错误。我正在关注 yt 频道以在 flutter 中发布请求。在该教程中,他们的代码运行良好。但我不知道为什么我会收到错误。
请从现在开始不要阅读文字。我只是复制粘贴使它超过220字。
我想发布一个请求。我已经对 json 文件进行了编码,并将内容类型定义为 application/json,但仍然收到代码 400。由于我是 flutter 新手,我无法理解我在哪里犯了错误。 我想向该网址发送请求。我已经对 json 进行了编码,并定义了内容的类型。但我不知道为什么会收到错误 400 代码。代码中也给出了我想要发布请求的地址。我认为我没有犯任何语法错误。我正在关注 yt 频道以在 flutter 中发布请求。在该教程中,他们的代码运行良好。但我不知道为什么我会收到错误。 我想发布一个请求。我已经对 json 文件进行了编码,并将内容类型定义为 application/json,但仍然收到代码 400。由于我是 flutter 新手,我无法理解我在哪里犯了错误。 我想向该网址发送请求。我已经对 json 进行了编码,并定义了内容的类型。但我不知道为什么会收到错误 400 代码。代码中也给出了我想要发布请求的地址。我认为我没有犯任何语法错误。我正在关注 yt 频道以在 flutter 中发布请求。在该教程中,他们的代码运行良好。但我不知道为什么我会收到错误。 我想发布一个请求。我已经对 json 文件进行了编码,并将内容类型定义为 application/json,但仍然收到代码 400。由于我是 flutter 新手,我无法理解我在哪里犯了错误。 我想向该网址发送请求。我已经对 json 进行了编码,并定义了内容的类型。但我不知道为什么会收到错误 400 代码。代码中也给出了我想要发布请求的地址。我认为我没有犯任何语法错误。我正在关注 yt 频道以在 flutter 中发布请求。在该教程中,他们的代码运行良好。但我不知道为什么我会收到错误。
以下是主要请求部分:
Future<void> submitData () async
{
//get the data from the form
final title=titleController.text;
final description=descriptionController.text;
final body ={
"tilte":title,
"description":description,
"is_completed":false
};
//submit data to server
final url='https://api.nstack.in/v1/todos';
final uri =Uri.parse(url);
final response =await http.post(uri,
body: jsonEncode(body),
headers: {"Content-Type" : "application/json"},
);
//is it working??
print(response);
print("he;;");
if(response.statusCode==201)
{
print("Creation succes");
}
else
{
print("Failed");
print(response.body);
}
}
从 subnitData 被调用的地方:
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class AddTodo extends StatefulWidget {
const AddTodo({super.key});
@override
State<AddTodo> createState() => _AddTodoState();
}
class _AddTodoState extends State<AddTodo> {
TextEditingController titleController=TextEditingController();
TextEditingController descriptionController=TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("To Do"),
centerTitle:true ,
),
body: ListView(
padding: EdgeInsets.all(20),
children: [
TextField(
controller: titleController,
decoration: InputDecoration(hintText: "Title"),
),
TextField(
controller: descriptionController,
decoration: InputDecoration(hintText: "Description"),
keyboardType: TextInputType.multiline,
minLines: 5,
maxLines: 20,
),
SizedBox(height: 20),
ElevatedButton(onPressed: submitData, child: Text("Submit")),
],
),
);
}
让我给您一个使用 http 包 在 flutter 中发布请求的快速演示。这个示例将是一个非常动态的解决方案,您可以在任何需要在 flutter 中发布请求的地方使用它
STEP-1 - 假设您的端点是
static String signInEndPoint = ‘$baseUrl/signin’;
STEP-2 - 创建异常处理方法
dynamic returnResponse(http.Response response) {
switch (response.statusCode) {
case 200:
return response;
// you can handel all your exception here
default:
debugPrint("Error with Connection");
}
}
STEP-3 - 创建 POST api 调用的方法
Future<http.Response> postApi(String url, dynamic data) async {
dynamic responseJson;
final headers = {HttpHeaders.contentTypeHeader: 'application/json'};
try {
final response = await http
.post(Uri.parse(url), body: json.encode(data), headers: headers)
.timeout(const Duration(seconds: 30));
return responseJson = returnResponse(response);
} on SocketException {
throw FetchDataException('No Internet Connection');
} catch (e) {
log('error$e');
}
return responseJson;
}
第 4 步 - 最后调用您的 POST api
Future<http.Response> callSignInApi({dynamic data}) async {
try {
final response = await postApi(signInEndPoint, data);
return response;
} catch (e) {
throw Exception(e);
}
}
// pass your Query parameters Map into data like this
final Map<String, dynamic> data = {
'username_email': userName,
'password': password,
};
await callSignInApi(data: data).
then((Response value) async {
if(value.statusCode == 200){
// your model class
// you can convert your json to Dart from here //https://app.quicktype.io/
final SignInModel signInModel = SignInModel.fromJson(jsonDecode(value.body));
// now you have your api response in signInModel, you can consume
// it according to your need
}
}).catchError((e, StachTrace){
debugPrint("ERROR--${e.toString()}");
});
注意:如果您希望以干净的架构处理 flutter 中的网络请求,请遵循此link