Har*_*put 0 django pythonanywhere django-rest-framework flutter
我正在使用Django rest-framework开发一个Flutter应用程序。注册api在Postman中运行良好,但是从flutter应用程序成功注册后,它会显示上述错误。该请求已通过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());
});
Run Code Online (Sandbox Code Playgroud)
SocketException:操作系统错误:连接被拒绝,errno = 111
我希望这个请求的响应是一个包含用户和令牌的Json对象。
spy*_*nda 15
我去了终端并使用ifconfig命令
我得到了我的 IP 地址: 192.168.0.109
然后我在 flutter app http 请求中简单地用我的“localhost”替换了这个 IP 地址。它就像一个魅力!
小智 15
我在真实设备中运行时遇到了同样的问题,仅更改 API 链接中的 IP 不起作用\xc2\xb4。
\n我的解决方案是使用以下命令运行服务器:
\nmanage.py runserver 0.0.0.0:8000\n\nRun Code Online (Sandbox Code Playgroud)\n然后将您的机器 IP 传递给 API 链接而不是 localhost,如下例所示:
\nhttp://192.168.0.67:8000\nRun Code Online (Sandbox Code Playgroud)\n
除了 Rohan 的回答,您还可以阅读:
无法使用 Flutter 调用本地主机,随机端口被分配给 HTTP GET 调用
我试图使用本地服务器在物理设备上运行我的应用程序,为此我必须使用下面提到的命令,请记住根据您自己的端口号更改端口号
adb reverse tcp:3001 tcp:3001
Run Code Online (Sandbox Code Playgroud)
正如@maheshmnj 指出的,这个命令正在将你手机的 3001 端口重定向到你电脑的 3001 端口。如果你想将手机的 2000 端口重定向到电脑的 3000 端口,那么你可以这样做
adb reverse tcp:2000 tcp:3000
您还可以通过下面提到的页面https://developer.android.com/studio/command-line/adb.html阅读有关 adb 和网络的信息
当端点不正确或您的主机和服务器后端(示例 Laravel API)不共享相同的 IP 地址时,就会出现此问题。
解决办法是。
ifconfig。IP ADDRESS如果您使用 Laravel 构建 API,请启动指定到您计算机的服务器, sudophp artisan serve --host YOUR_COMPUTER_IP_ADDRESS --port NUMBER例子:
`sudo php artisan serve --host 192.168.1.11 --port 80`
Run Code Online (Sandbox Code Playgroud)
http://192.168.1.11:80/Your_Routeipconfig并获取ipv41:示例:
await http.post("http://127.68.34.23/wp-json/...",
headers: headers,
body: json.encode(data))
Run Code Online (Sandbox Code Playgroud)
如果在服务器中,在 url 中写入 main 的 url
小智 7
我知道这个问题太老了,但我会回答这个问题,因为这可能对遇到这个问题的人有帮助。
如果没有更多细节,我无法给出具体的解决方案。但具备以下条件可以给出具体的解决方案
您尝试使用邮递员的 URL 可能类似于此http://127.0.0.1:[port number]/register或http://localhost:[port number]/register. 但这可能不适用于模拟器,因为它无法访问该 URL。要访问本地主机,您需要找出主机地址。
请按照以下步骤获取您的主机地址。
然后你就可以看到你host name的了port number。然后将您的 URL 替换为http://10.0.0.2:5000/register.
Harnish,需要更多一些详细信息才能调试此错误。
可能的解决方案:
如果您是在本地运行服务器并使用Android模拟器,则您的服务器终结点应该10.0.2.2:8000不是localhost:8000AVD 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');
}
}
Run Code Online (Sandbox Code Playgroud)
或非异步/等待方法
void myFunction() {
var data = {};
http.post(URL, headers:headers, body:data)
.then((response) => print(response.body))
.catchError((error) => print(error));
}
Run Code Online (Sandbox Code Playgroud)
有关Dart期货的更多详细信息,请阅读 https://www.dartlang.org/tutorials/language/futures
在 C#[.net core api] 中,转到“属性”选项卡下的 launchSettings.json,并将以下代码更改为此(将 applicationURl 上的 localhost 更改为 0.0.0.0),并在应用程序(flutter)上使用本地 IPV4 IP。例如:(192.169.0.10)
"coreWebAPI": {
"commandName": "Project",
"launchBrowser": false,
"launchUrl": "api/values",
"applicationUrl": "http://0.0.0.0:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2880 次 |
| 最近记录: |