我正在学习使用mongodb atlas进行登录注册。但我正面临着一些问题。当我发送http post请求在模拟器中创建新用户,它不工作,并抛出一些错误。但同样的事情也适用于邮递员。我可以很容易地在postman中创建新用户。有人能帮我解决这个问题吗?我在这里给出了我的代码和错误。
Future signup(email, password) async {
var url = Uri.parse("http://localhost:5050/signup"); // iOS
final http.Response response = await http.post(
url,
headers: {
'Content-Type': 'application/json; charset=UTF-8',
},
body: json.encode({
'email': email,
'password': password,
}),
);
print(response.body);
}这是我的服务器文件:
const express = require('express')
const app = express()
const port = 5050
const mongoose = require('mongoose')
async function connectDB(){
await mongoose.connect('mongodb+srv://imran:123s@cluster0.bupnj.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',
{useUnifiedTopology: true, useNewUrlParser: true}
)
console.log('db connected')
}
connectDB()
app.use(express.json({extended: false}))
// app.get('/', (req, res) => {
// res.send('Hello Backend Server!')
// })
const schema = new mongoose.Schema({ email: 'string', password: 'string' });
const User = mongoose.model('User', schema);
app.post('/signup', async (req, res) => {
const {email, password} = req.body;
// console.log(req.body)
//console.log("Email: "+email);
//console.log("Password: "+password);
let user = new User({
email,
password
})
console.log(user)
await user.save()
res.json({token: "1234567890"})
//return res.send('signup api route!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})下面是我得到的错误:
E/flutter ( 4842): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 55746
E/flutter ( 4842): #0 _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:677:35)
E/flutter ( 4842): #1 _RawSocket.startConnect (dart:io-patch/socket_patch.dart:1680:26)
E/flutter ( 4842): #2 RawSocket.startConnect (dart:io-patch/socket_patch.dart:27:23)
E/flutter ( 4842): #3 Socket._startConnect (dart:io-patch/socket_patch.dart:1891:22)
E/flutter ( 4842): #4 Socket.startConnect (dart:io/socket.dart:738:21)
E/flutter ( 4842): #5 _ConnectionTarget.connect (dart:_http/http_impl.dart:2439:18)
E/flutter ( 4842): #6 _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2805:12)
E/flutter ( 4842): #7 _HttpClient._getConnection (dart:_http/http_impl.dart:2810:12)
E/flutter ( 4842): #8 _HttpClient._openUrl (dart:_http/http_impl.dart:2694:12)
E/flutter ( 4842): #9 _HttpClient.openUrl (dart:_http/http_impl.dart:2568:7)
E/flutter ( 4842): #10 IOClient.send (package:http/src/io_client.dart:35:38)
E/flutter ( 4842): #11 BaseClient._sendUnstreamed (package:http/src/base_client.dart:93:38)
E/flutter ( 4842): #12 BaseClient.post (package:http/src/base_client.dart:32:7)
E/flutter ( 4842): #13 post.<anonymous closure> (package:http/http.dart:69:16)
E/flutter ( 4842): #14 _withClient (package:http/http.dart:164:20)
E/flutter ( 4842): #15 post (package:http/http.dart:68:5)
E/flutter ( 4842): #16 signup (package:sampleproject/login.dart:61:40)
E/flutter ( 4842): #17 _loginState.build.<anonymous closure>.<anonymous closure> (package:sampleproject/login.dart:50:19)
E/flutter ( 4842): #18 State.setState (package:flutter/src/widgets/framework.dart:1088:30)
E/flutter ( 4842): #19 _loginState.build.<anonymous closure> (package:sampleproject/login.dart:49:17)
E/flutter ( 4842): #20 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989:21)
E/flutter ( 4842): #21 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:193:24)
E/flutter ( 4842): #22 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608:11)E/flutter ( 4842): #23 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)E/flutter ( 4842): #24 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:267:7)
E/flutter ( 4842): #25 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
E/flutter ( 4842): #26 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:444:20)
E/flutter ( 4842): #27 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:420:22)E/flutter ( 4842): #28 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:278:11)
E/flutter ( 4842): #29 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374:7)
E/flutter ( 4842): #30 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338:5)
E/flutter ( 4842): #31 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:296:7)
E/flutter ( 4842): #32 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:279:7)
E/flutter ( 4842): #33 _rootRunUnary (dart:async/zone.dart:1444:13)
E/flutter ( 4842): #34 _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter ( 4842): #35 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244:7)
E/flutter ( 4842): #36 _invoke1 (dart:ui/hooks.dart:185:10)
E/flutter ( 4842): #37 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:293:7)
E/flutter ( 4842): #38 _dispatchPointerDataPacket (dart:ui/hooks.dart:98:31)
E/flutter ( 4842):发布于 2021-10-18 09:21:37
转到cmd并键入ipconfig,然后复制ip地址。您应该将url localhost替换为该ip地址。
var url = Uri.parse("http://your_ip_adrress:5050/signup");这就是我解决这个问题的方法。
发布于 2021-11-16 09:44:57
更改localhost,转到模拟器中的wifi设置,复制网关ip并将"localhost“替换为该ip (我认为是10.2.2.2,但现在不确定)
https://stackoverflow.com/questions/69570486
复制相似问题