我用django rest-framework构建了一个颤动的应用程序。注册api在Postman中工作正常,但是从flutter app成功注册后,它显示出上述错误。请求已通过https地址发送。
删除了csrf。什么都没发生。
var data = {'email':signupemailidcontroller.text,
'password1':passwordcontroller.text,
'password2':confirmpasswordcontroller.text,
};
//http request here
await http.post(websitesignupurl,
headers: headers,
body: json.encode(data))
.then((onResponse){
print(onResponse.body);
}).catchError((onerror){
print(onerror.toString());
});
SocketException:操作系统错误:连接被拒绝,错误= 111
我期望此请求的响应是包含用户和令牌的Json对象。
Harnish,需要更多细节才能调试此错误。
可能解决方案
如果您在本地运行服务器并使用Android模拟器,那么您的服务器端点应该是10.0.2.2:8000
而不是localhost:8000
,因为AVD使用10.0.2.2
作为主机环回接口的别名(即)localhost
关于期货的说明
我注意到上面的代码是使用await然后在同一行。这可能令人困惑,很明显,await
用于暂停执行直到将来完成,而then
是一个在未来完成后执行的回调函数。同样可以写成如下
void myFunction() async {
var data = {};
var response = await http.post(URL, headers:headers, body:data);
if (response.statusCode == 200) {
print(reponse.body);
} else {
print('A network error occurred');
}
}
或非async / await方法
void myFunction() {
var data = {};
http.post(URL, headers:headers, body:data)
.then((response) => print(response.body))
.catchError((error) => print(error));
}
有关Dart期货的更多详细信息,请阅读https://www.dartlang.org/tutorials/language/futures