When trying to post to the API, I get a "status": 400 error in Flutter
303
Use the simple map
and pass it to jsonEncode
submitData(
String name, String surname, String email, String plateNumber) async {
try {
Uri uri = Uri.parse("http://ngcyaz.com/api/drivers");
final map = {
"name": name,
"surname": surname,
"email": email,
"plateNumber": plateNumber
};
Map<String, String> header = {"content-type": "application/json"};
var response = await http.post(uri, body: jsonEncode(map), headers: header);
var data = response.body;
print("data " + data);
if (response.statusCode == 200) {
String responseString = response.body;
print("Response String: " + responseString);
} else
return null;
} catch (e) {
print(e);
}
}
Author by
EMİRŞAH ERDEN
Updated on November 27, 2022Comments
-
EMİRŞAH ERDEN over 1 year
I/flutter (30384): data {"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|e3244589-485510f2c271c42c.","errors":{"$.name":["'name, "surname": surname, "email": email, "plateNumber": plateNumber}' is an invalid JSON literal. Expected the literal 'null'. Path: $.name | LineNumber: 0 | BytePositionInLine: 11."]}}
Code here:
DataModel class
List<DataModel> dataModelFromJson(String str) => List<DataModel>.from(json.decode(str).map((x) => DataModel.fromJson(x))); String dataModelToJson(List<DataModel> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson()))); class DataModel { DataModel({ this.name, this.surname, this.email, this.plateNumber, }); int id; String name; String surname; String email; String plateNumber; factory DataModel.fromJson(Map<String, dynamic> json) => DataModel( name: json["name"], surname: json["surname"], email: json["email"], plateNumber: json["plateNumber"], ); Map<String, dynamic> toJson() => { "name": name, "surname": surname, "email": email, "plateNumber": plateNumber, }; }
service class
Future<DataModel> submitData(String name, String surname, String email, String plateNumber) async { try { Uri uri = Uri.parse("http://ngcyaz.com/api/drivers"); String json = "{ \"name\": name, \"surname\": surname, \"email\": email, \"plateNumber\": plateNumber}"; Map<String, String> header = {"content-type": "application/json"}; var response = await http.post(uri, body: json, headers: header); var data = response.body; print("data " + data); if (response.statusCode == 200) { String responseString = response.body; dataModelFromJson(responseString); } else return null; } catch (e) { print(e); } }
-
Pathik Patel almost 3 yearsPlease check that value given to key
name
is not empty before hitting API.
-