我正在调用一个登录api,我可以让它在邮递员,在我的浏览器和本地android代码中工作,但是当我在flutter中调用相同的api时,我得到以下错误:
DioError [DioErrorType.other]: SocketException: OS Error: Connection refused, errno = 111, address = 10.0.0.25, port = 53330 #0
我知道api url是正确的,主体是正确的(这是一个post),头/cookie也是正确的,就像我在postman中设置的一样,它可以处理刚才提到的所有相同的信息。
以下是对API的调用
api.login(deviceId, requestObj).then((response) {
_processLogin(response);
_sofiPrefs!.saveEmail(email!);
if (Foundation.kDebugMode) {
_sofiPrefs!.saveDebugPassword(password);
}
}).catchError((error) {
_loginError(error);
});
和为DIO设置的api:(url已更改)
part 'network_services.g.dart';
@RestApi()
abstract class NetworkServices {
factory NetworkServices() {
return _NetworkServices(serviceLocator<Dio>());
}
@POST("login/mobile/login")
Future<HttpResponse<LoginResponsev3>> login(
@Header(dIDHeader) String dId, @Body() LoginReq request);
}
和响应模型
@JsonSerializable()
class LoginResponsev3 {
String? email;
String? twoFactorType;
String? twoFactorData;
String? twoFactorSessionToken;
LoginResponse(
this.email,
this.twoFactorType,
this.twoFactorData,
this.twoFactorSessionToken);
factory LoginResponse.fromJson(Map<String, dynamic> json) =>
_$LoginResponseFromJson(json);
Map<String, dynamic> toJson() => _$LoginResponseToJson(this);
}
发布于 2021-11-04 00:18:08
请验证是否拥有android清单的internet权限。
<uses-permission android:name="android.permission.INTERNET" />
并添加usesCleartextTraffic
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
更重要的是,这是一个移动/Web/桌面应用程序?
https://stackoverflow.com/questions/69832743
复制相似问题