【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);

以上写法的时候接口总是返回密码不能为空,如图:
【flutter】flutter开发 dio接口请求及返回处理的问题
看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);

这回,接口返回的提示正确了,因为是随便输入的账号密码,接口肯定是提示用户不存在,这就是对的返回,如图:
【flutter】flutter开发 dio接口请求及返回处理的问题

我现在的疑问是,上面的两种写法有什么不同?明明按照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

回到顶部