【flutter】flutter开发 dio接口请求及返回处理的问题
我这里dio的配置如下:(不知道有没有写错,有错的话,请指出,初学者求教,谢谢^_^)
import 'dart:io';import 'package:dio/dio.dart';
class BaseUrl {
// 配置默认请求地址
// static String url = 'http://xxxxxxxxx/'; // 测试环境
}
BaseOptions options = new BaseOptions(
baseUrl: BaseUrl.url,
connectTimeout: 5000,
receiveTimeout: 3000,
headers: {HttpHeaders.acceptHeader: "accept: application/json"},
);
Dio dio = new Dio(options);
登录的表单逻辑省略,直接上接口请求的逻辑如下:
print('用户名:' + _unameController.text + ',密码:' + _pwdController.text);String url = "/xxxxx/login.json"; //接口
Response response = await dio.post(url, data: {
"loginid": _unameController.text,
"password": _pwdController.text
});
print(response);
以上写法的时候接口总是返回密码不能为空,如图:
看print的密码明明是表单里输入的值,可是接口返回的是密码不能为空,明显不对;
然后修改写法:
print('用户名:' + _unameController.text + ',密码:' + _pwdController.text);String url = "/xxxxx/login.json?loginid=${_unameController.text}&password=${_pwdController.text}";
Response response = await dio.post(url);
print(response);
这回,接口返回的提示正确了,因为是随便输入的账号密码,接口肯定是提示用户不存在,这就是对的返回,如图:
我现在的疑问是,上面的两种写法有什么不同?明明按照dio flutter 中文文档 的例子,上面第一种的写法也是对的吧,可是为什么参数传不过去呢?
另外,作为flutter的初学者,dart语言也不太会用,对于这个返回response
我该如何处理?怎么写才能让返回的message能显示在页面上提示用户?
回答
对于response的处理,我自己搞出来了,初学者,真不容易:
//.... 前面的省略了 Response response = await dio.post(url);
// print(response);
dynamic rtn = jsonDecode(response.toString()); // 解析接口返回的json数据
// print(response.statusCode.toString() + ' : ' + rtn.toString());
if (response.statusCode == HttpStatus.ok) {
// print(rtn["code"]);
// print(rtn["message"]);
if (rtn["code"] == '1') {
// 登录成功 写一堆自己的操作.....此处省略
//返回到首页
Navigator.of(context).pop();
} else {
// 登录失败
// print(response);
// print(rtn["message"]);
showToast(rtn["message"]);
}
} else {}
关于问题中两种post请求写法的疑问,请大神解答下啊,谢谢^_^
应该是头文件设置的问题吧,加access-control-allow-origin:* 试试呢
请问楼主问题后来怎么解决的 我也碰到了相同的问题
以上是 【flutter】flutter开发 dio接口请求及返回处理的问题 的全部内容, 来源链接: utcz.com/a/82497.html