我正在開發一個需要對我們的服務器進行 api 呼叫的應用程式。我必須將 List 作為引數傳遞,但是當我嘗試傳遞 List 時,它會像“["Some Info 1","Some Info 2"]" 這樣的字串一樣傳遞。我嘗試除錯,當它執行 http 請求時,它會自動添加 "" 環繞串列。
這是我的服務類
Future<Map<String, dynamic>> post(
String _url, Map<String, String> _headers, Map<String, String> _params) {
print('_url => $_url');
if (_headers != null) {
print('_headers => $_headers');
}
print('_params => $_params');
return http
.post(Uri.parse(BASE_URL _url),
headers: (_headers != null) ? _headers : {}, body: _params)
.then(
(response) {
final code = response.statusCode;
final body = response.body;
final jsonBody = json.decode(body);
debugPrint('response code => $code');
debugPrint('response body => $body');
Map<String, dynamic> _resDic;
if (code == 200 || code == 300) {
_resDic = Map<String, dynamic>.from(jsonBody);
_resDic[HTTP_CODE] = code;
print('Success => ${_resDic[HTTP_CODE]}');
if (code == 422) {
SharedPref.saveString(AUTH_TOKEN, '');
SharedPref.saveInt(USER_TYPE, 0);
SharedPref.saveObject(USER, null);
SharedPref.resetData();
navigationKey.currentState
.pushNamedAndRemoveUntil(LOGIN, (route) => false);
if (_resDic[IS_TOKEN_EXPIRED] == 1) {
_resDic[HTTP_CODE] = 422;
}
}
} else {
_resDic = Map<String, dynamic>();
_resDic[HTTP_CODE] = code;
_resDic[IS_TOKEN_EXPIRED] = 0;
_resDic[MESSAGE] = jsonBody[MESSAGE] != null
? jsonBody[MESSAGE]
: 'Something went wrong';
_resDic[HTTP_CODE] = code;
}
print('===>> Response : $_resDic');
return _resDic;
},
);
}
uj5u.com熱心網友回復:
用你的引數編碼
json.encode(params)
uj5u.com熱心網友回復:
我是用這種方法解決的。
generateHeaders() async {
String _token = await SharedPref.readString(AUTH_TOKEN);
return {
'Authorization': 'Bearer $_token',
"Accept": "application/json",
"Content-Type": "application/json"
};
}
Future<Map<String, dynamic>> postDynamic(
String _url, Map<String, String> _headers, Map<String, dynamic> _params) {
print('_url => $_url');
if (_headers != null) {
print('_headers => $_headers');
}
print('_params => $_params');
return http
.post(Uri.parse(BASE_URL _url),
headers: (_headers != null) ? _headers : {},
body: json.encode(_params))
.then(
(response) {
final code = response.statusCode;
final body = response.body;
final jsonBody = json.decode(body);
debugPrint('response code => $code');
debugPrint('response body => $body');
print('response code => $code');
Map<String, dynamic> _resDic;
if (code == 200 || code == 300) {
_resDic = Map<String, dynamic>.from(jsonBody);
_resDic[HTTP_CODE] = code;
print('Success => ${_resDic[HTTP_CODE]}');
} else if (code == 401) {
SharedPref.saveString(AUTH_TOKEN, '');
SharedPref.saveInt(USER_TYPE, 0);
SharedPref.saveObject(USER, null);
SharedPref.resetData();
navigationKey.currentState
.pushNamedAndRemoveUntil(LOGIN, (route) => false);
} else {
_resDic = Map<String, dynamic>();
_resDic[HTTP_CODE] = code;
_resDic[IS_TOKEN_EXPIRED] = 0;
_resDic[MESSAGE] = jsonBody[MESSAGE] != null
? jsonBody[MESSAGE]
: 'Something went wrong';
_resDic[HTTP_CODE] = code;
}
print('===>> Response : $_resDic');
return _resDic;
},
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/368137.html
上一篇:網路服務器有時無法發送所有影像
