【发布时间】:2020-09-09 06:55:10
【问题描述】:
我对 Flutter 完全陌生。在学习颤振时,我无法使用颤振 Web 应用程序登录,相同的代码在 android 移动应用程序中运行良好。
请查看以下日志信息。除了 Flutter Web 之外,所有平台上都可以使用相同的调用
信息:2020-05-22 17:40:48.229: curl -v -X POST -H 'content-type: application/json; charset=UTF-8' -H 'Accept: /' -H 'Cache-Control: no-cache' -H 'Connection: keep-alive' -d '{"username":"admin ","密码":"admin@123"}' http://healthvedic.in/api/admin/user/login.php
'String' 类型的预期值,但得到了 'ClientException' 类型之一
import 'package:chopper/chopper.dart';
part 'chopper_network_manager.chopper.dart';
@ChopperApi(baseUrl: '')
abstract class ChopperNetworkManager extends ChopperService {
static ChopperNetworkManager manager;
@Post(path: 'admin/user/login.php')
Future<Response> doLogin(@Body() Map<String, dynamic> body);
static var customHeaders = {
'content-type': 'application/json; charset=UTF-8',
'Accept': '*/*',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
};
static ChopperNetworkManager create() {
final client = ChopperClient(
baseUrl: 'http://healthvedic.in/api/',
services: [
_$ChopperNetworkManager(),
],
converter: JsonConverter(),
interceptors: [
HeadersInterceptor(customHeaders),
CurlInterceptor(),
]);
return _$ChopperNetworkManager(client);
}
static ChopperNetworkManager getInstance() {
if (manager == null) {
manager = ChopperNetworkManager.create();
return manager;
}
return manager;
}
}
呼叫地点
void doLogin() async {
LoginReqModel reqModel = LoginReqModel(
username: userNameController.text, password: passwordController.text);
var res = ChopperNetworkManager.getInstance().doLogin(reqModel.toJson());
res.then(
(value) => {
updateOnUI(LoginResModel.fromJson(value.body)),
}, onError: (e) {
onError(e);
}).catchError(onError, test: (error) => onError(error));
res.catchError(onError(''));
}
以下是 PHP Rest-API 中的标头
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, Access-Control-Allow-Origin");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST, OPTIONS");
【问题讨论】:
-
能否分享一些代码 sn-ps,例如引发异常的行或函数
-
感谢@ShubhamTanwar 的回复:我已经更新了代码。请检查,如果需要任何信息,请告诉我。
-
能否请您突出显示引发此异常的行
-
发生错误我收到错误日志:res.then( (value) => { updateOnUI(LoginResModel.fromJson(value.body)), }, onError: (e) {
-
您可能应该检查
ClientException,看看它告诉您什么。底层的 http 客户端在 web 和 native 上是不同的,所以可能会有一些不同的处理。
标签: php flutter flutter-web chopper