SocketException:操作系统错误:连接被拒绝,errno = 111使用django后端flutter

问题描述 投票:0回答:1

我用django rest-framework构建了一个颤动的应用程序。注册api在Postman中工作正常,但是从flutter app成功注册后,它显示出上述错误。请求已通过https地址发送。

删除了csrf。什么都没发生。

Request:

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());
        });

Output in Console:

SocketException:操作系统错误:连接被拒绝,错误= 111

我期望此请求的响应是包含用户和令牌的Json对象。

django flutter django-rest-framework pythonanywhere
1个回答
0
投票

Harnish,需要更多细节才能调试此错误。

  1. 您是在本地运行服务器还是与远程服务器通信?
  2. 您是否在Android模拟器上运行应用程序?

可能解决方案

如果您在本地运行服务器并使用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

© www.soinside.com 2019 - 2024. All rights reserved.