我尝试使用 get 方法进行参数传递,并且我创建了一个获取 jsondata 的模型,但出现 500 错误。但是在这里工作的邮递员附上了我的代码,请解决我的问题。 enter image description here
sigin() async {
var params = {
"username": "XYZ_32950",
"password": "XYZ_39510",
"ProjectName": "ABCD"
};
Uri uri = Uri.parse("http://abcd.abcd.co.in/api/login");
uri.replace(queryParameters: params);
var response = await http
.get(uri, headers: {HttpHeaders.contentTypeHeader: "application/json"});
print('---- status code: ${response.statusCode}');
var jsonData = json.decode(response.body);
if (jsonData != null) {
User data = User.fromJson("user");
return data;
} else {
isLoading = false;
return null;
}
}
class User {
String _loginStatus;
String _Status;
String _DivisionName;
User.fromJson(jsonData) {
this._loginStatus = jsonData['loginStatus'];
this._Status = jsonData['Status'];
this._DivisionName = jsonData['DivisionName'];
}
String get loginStatus => _loginStatus;
String get Status => _Status;
String get DivisionName => _DivisionName;
set DivisionName(String value) {
_DivisionName = value;
}
set Status(String value) {
_Status = value;
}
set loginStatus(String value) {
_loginStatus = value;
}
}
答案 0 :(得分:0)
这应该有效,
而不是使用 Uri.parse
使用 Uri.http
。
sigin(String url) async {
final base_url = 'devfield.ppms.co.in';
final path = '/HRMS_WEBAPI/api/login';
var params = {
"username": "XYZ_39510",
"password": "XYZ_39510",
"ProjectName": "PPMS"
};
try {
final response = await http.get(
Uri.http(base_url, path, params),
headers: {HttpHeaders.contentTypeHeader: "application/json"},
);
// response
} catch (e) {
// error handling
}
}
答案 1 :(得分:0)
基于 Postman 项目,您的代码不正确。主要问题是参数没有像您的代码所建议的那样作为 GET 变量(查询参数)发送,而是作为 JSON 编码的正文发送。
我已经重写了你的代码,所以它和你的 Postman 项目建议的一样:
class User {
String? loginStatus;
String? status;
String divisionName;
User.fromJson(dynamic jsonData)
: this.loginStatus = jsonData['loginStatus'] as String?,
this.status = jsonData['Status'] as String?,
this.divisionName = jsonData['DivisionName'] as String;
@override
String toString() =>
'loginStatus: $loginStatus, status: $status, divisionName: $divisionName';
}
Future<User?> signIn() async {
final params = utf8.encode(json.encode({
"username": "XYZ_39510",
"password": "XYZ_39510",
"ProjectName": "PPMS"
}));
final request = await HttpClient().openUrl(
'GET', Uri.parse('http://devfield.ppms.co.in/HRMS_WEBAPI/api/login'))
..headers.contentType = ContentType.json
..headers.contentLength = params.length
..add(params);
//await request.flush();
final response = await request.close();
print('---- status code: ${response.statusCode}');
final jsonData = await response
.transform(const Utf8Decoder())
.transform(const JsonDecoder())
.single;
if (jsonData != null) {
final user = User.fromJson((jsonData as List<dynamic>).first)
print('---- divisionName--->: ${user.divisionName}');
return user;
} else {
//isLoading = false;
return null;
}
}
我应该注意,我没有使用 http
包,而是使用了 dart:io
。如果这是一个问题,请告诉我,我可以尝试重写它。