如何使用 Dio 或 http 在 Flutter 中通过 GET 请求发送参数
Posted
技术标签:
【中文标题】如何使用 Dio 或 http 在 Flutter 中通过 GET 请求发送参数【英文标题】:How to send parameters with GET request in Flutter using Dio or http 【发布时间】:2020-11-29 03:46:21 【问题描述】:我正在尝试使用一些参数向后端服务器发送 GET 请求,但我收到了错误:
DioError [DioErrorType.RESPONSE]: Http status error [500]
我发送的参数也包含一个布尔值和一个双精度值。我怎样才能成功提出这个请求。我在 SO 上尝试了很多答案,但没有一个对我有用。 下面是我的代码sn-p
Future<Converter> currencyConverter() async
String convertURL = baseURL + 'convert/currency/';
String auth = await localpref.getString('access');
// FormData formData = new FormData.fromMap(
// "switch": _switch,
// "s_currency": senderCurrencyVal,
// "r_currency": recieverCurrencyVal,
// "amount": amount
// );
Map<String, dynamic> payload =
"switch": _switch, //boool
"s_currency": senderCurrencyVal, // string
"r_currency": recieverCurrencyVal, // string
"amount": amount //double
;
try
var res = await dio.get(convertURL,
//data: formData,
queryParameters: payload,
options: Options(
followRedirects: false,
validateStatus: (status)
return status < 500;
,
headers:
"accept": "*/*",
"Authorization": "Bearer $auth",
"Content-Type": "application/x-www-form-urlencoded"
));
if (res.statusCode >= 200 && res.statusCode <= 250)
print("Transfer Succeed");
var respBody = res.data;
Converter converter = converterFromJson(res.data);
print(converter.result);
return converter;
else
print(res);
print("Else not successful");
catch (e)
print(e);
注意:我不负责后端,我知道它是用 Django 开发的。我也尝试过 dio.get 和 dio.request 但我得到了相同的结果,使用 Dio 时 formdata 不能与 GET 一起使用。
这个请求在邮递员中运行良好。
感谢您的帮助。 问候
【问题讨论】:
你试过用相同的参数在邮递员中点击相同的网址吗?它在那里按预期工作吗? 是的,在邮递员中一切正常 代码看起来不错。这是您项目中唯一无法正常工作的请求吗? 是的,我的帖子和补丁工作正常,即使没有参数也工作正常 【参考方案1】:看看这个how to fix it Data not showing in list in flutter。
我直接使用 http 进行任何获取。同时查看https://app.quicktype.io/ 以快速创建解码器类。要使用它,请在此处复制邮递员的响应,它将在 Dart 中为您生成一个类。
【讨论】:
我最初创建了一个类,但它总是调用 NULL,因为 api 调用不返回任何内容 同时检查 url...当你使用 concat 时,可能会有 / 丢失 .. 我已经做到了,实际上 URL 没有参数也可以正常工作,当我添加参数时,我遇到了这个问题 能否分享完整链接和示例字段,我可以尝试运行它 等待...要发送数据以接收响应,您必须使用 http 中的 post()以上是关于如何使用 Dio 或 http 在 Flutter 中通过 GET 请求发送参数的主要内容,如果未能解决你的问题,请参考以下文章