networking - 带有正文参数的 Http 发布请求不起作用
问题描述
最近我开始在 Flutter 中开发一个小应用程序。我在发出网络请求时遇到问题。我已经尝试过邮递员的电话,并且可以正常工作。但是在 Flutter 中,我从来没有成功过,我花了大约 3 个小时试图了解我做错了什么。
任何帮助将不胜感激。
@override
Future<String> login(common.LoginParameters loginParameters) async {
try {
final String loginURL = "https://test.example.eu/api/login";
LoginModel loginResult;
Map bodyParams = { "inlognaam" : loginParameters.username , "wachtwoord" : loginParameters.password, "code" : loginParameters.smsCode};
//await API call
http.Response httpResponse = await http.put( loginURL, body: json.encode(bodyParams));
if (httpResponse.statusCode == 200) {
// If server returns an OK response, parse the JSON
loginResult= LoginModel.fromJson(json.decode(httpResponse.body));
} else {
// If that response was not OK, throw an error.
throw Exception('Failed to load post');
}
// if logged in get token, Otherwise return error
if (loginResult.ingelogd) {
// read the token
saveToken(loginResult.response);
return "Ingelogd";
} else {
return loginResult.error;
}
}
on Exception catch(error) {
print("Todor " + error.toString());
return "Controleer uw internet verbinding en probeer opnieuw";
}
}
在 Postman 中,如果我选择带有正文参数 inlognaam 的 Post 请求:someUsername wachtwoord:somePassword 代码:someCode
然后我得到一个成功的响应
解决方案
我通过以下方式传递参数,也许它可以为你工作:
var response = await http.post(
url,
headers:{ "Accept": "application/json" } ,
body: { "state": 1}, //key value
encoding: Encoding.getByName("utf-8")
);
另一件事,你说在邮递员中你发出一个post请求,但在你的代码中你有一个put请求,验证什么是正确的方法
推荐阅读
- c# - 如何在 C# 中登录 myBB。(散列无法正常工作)
- codenameone - 共享压缩 (zip) 文件
- neo4j - Neo4j 的 REST API 或 Java 驱动程序 API?
- sockets - 服务器以 [ACK] 响应客户端的 [SYN],最终来自客户端的 [RST, ACK]
- express - 在 jupyter notebook 中未显示 plotly express 情节
- mysql - SQL:获取空值的平均值
- security - 如何在安全服务器的验证阶段区分 refresh_token 和 access_token?
- react-native - Expo 或 React Native CLI
- javascript - KnockoutJS Observable 未在模板中更新
- objective-c - UICollectionView 动态高度和宽度