标签: dio

如何使用 dio 和 mime 类型在 flutter 中使用多部分表单数据上传图像

这是我的代码

void _uploadFile(filePath1, filepath2) async {
    // Get base file name
    String fileName1 = basename(filePath1.path);
    var ij = lookupMimeType(fileName1);
    print('this is $ij');
    print("File base name: $fileName1");
    print(filePath1);
    String fileName2 = basename(filepath2.path);

    try {
      FormData formData = new FormData.fromMap({
        "text": 'hello',
        "productImages": [
          await MultipartFile.fromFile(filePath1.path, filename: fileName1),
          await MultipartFile.fromFile(filepath2.path, filename: fileName2),
        ]
      });

      Response response = await Dio().post("http://192.168.18.25:8080/test",
          data: formData,);
      print("File upload response: $response");

      // Show the incoming message in snakbar
      _showSnakBarMsg(response.data['message']);
    } catch (e) {
      print("Exception Caught: $e");
    }
  } …
Run Code Online (Sandbox Code Playgroud)

multipartform-data image-upload dart flutter dio

4
推荐指数
1
解决办法
2万
查看次数

如何避免在繁重计算时冻结 UI

尝试使用拦截器(来自dio)从服务器解密 JSON。但用户界面在解密过程中冻结。

class DecryptInterceptor extends Interceptor {

  @override
  Future onResponse(Response response) async {
    response.data = decrypt(response.data); //freezes here
    return super.onResponse(response);
  }

}

Object decrypt(Object object){
  // computations
}

Run Code Online (Sandbox Code Playgroud)

dart flutter dio

3
推荐指数
1
解决办法
2782
查看次数

Flutter 下载文件到手机下载目录

我已经搜索过类似的问题和这个问题的答案,但直到现在还没有找到任何具体的答案。我正在尝试将下载的文件保存到我的内部手机存储中。最好是下载文件夹...我正在使用 dio 和路径提供程序。已尝试使用“获取外部存储目录”。但即使下载后,我也无法在设备中的任何位置找到该文件。请问我如何指定下载路径到 /storage/emulated/0/Download 之类的东西

provider path dart flutter dio

3
推荐指数
1
解决办法
9094
查看次数

DioError [DioErrorType.RESPONSE]:Http 状态错误 [500],为什么?

我是 flutter 新手,我在项目中使用 Dio 来实现会员注册功能..但是每次我执行注册过程时,调试控制台都会给我这个错误

I/flutter (13428): Instance of 'FormData'
I/flutter (13428): DioError [DioErrorType.RESPONSE]: Http status error [500]
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试向 POSTMAN 注册时,它成功了。所以我不确定问题出在哪里..这是我的代码,你们能帮我吗?我已经坚持这个问题好几个星期了..

final String url = "https://api.censored.org/api/members/register";

Dio.FormData formData = Dio.FormData.fromMap({
  "nama_lengkap": name,
  "tempat_lahir": tempatlahir,
  "tanggal_lahir": selectedDate.toString(),
  "email": email,
  "password": password,
  "username": username,
  "nomor_ktp": noKTP,
  "alamat_ktp": alamatktpmember,
  "alamat_domisili": alamatmember,
  "pekerjaan": pekerjaanmember,
  "alamat_pekerjaan": alamatperusahaanmember,
  "no_whatsapp": noWAmember,
  "no_hp": noteleponmember,
  "nama_pemilik_rekening": namarekmember,
  "nomor_rekening": norekmember,
  "bank_id": _valBank,
  "aggrement": _eulargprogramming,

  //Foto
  "foto_ktp": await Dio.MultipartFile.fromFile(_fotoKtp.path),
  "selfie_dengan_ktp": await Dio.MultipartFile.fromFile(_fotoSelfie.path),
  "foto_kk": await Dio.MultipartFile.fromFile(_fotoKK.path),
  "foto_pengenal_lainnya":
      await Dio.MultipartFile.fromFile(_fotoKartu.path),
  "foto_buku_rekening":
      await Dio.MultipartFile.fromFile(_fotoRekening.path), …
Run Code Online (Sandbox Code Playgroud)

json http-error dart flutter dio

3
推荐指数
1
解决办法
2万
查看次数

无法将参数类型“void Function(DioError)”分配给参数类型“void Function(DioError, ErrorInterceptorHandler)?”

所以我用一些简单的函数来包装我的 HTTP 请求。喜欢以下:

import 'package:dio/dio.dart';

class HttpService {
  late Dio _dio;

  final String baseUrl = "http://10.0.2.2:8080/community";

  HttpService() {
    _dio = Dio(BaseOptions(
      baseUrl: baseUrl,
    ));

    // initializaInterceptors();
  }

  Future<Response> getRequest(String endPoint) async {
    Response response;
    try {
      response = await _dio.get(endPoint);
    } on DioError catch (e) {
      print(e.message);
      throw Exception(e.message);
    }

    return response;
  }

  Future<Response> postRequest(String endPoint) async {
    Response response;
    try {
      response = await _dio.post(endPoint);
    } on DioError catch (e) {
      print(e.message);
      throw Exception(e.message);
    }

    return response;
  }

  initializaInterceptors() …
Run Code Online (Sandbox Code Playgroud)

dart flutter dio

3
推荐指数
1
解决办法
1350
查看次数

如何在 flutter 中使用 DIO 将多个文件、文件列表发布到服务器

文件/字段如下:

jsonData,

List[images],

MultipartFile,
Run Code Online (Sandbox Code Playgroud)

使用 DIO 将所有这些字段/文件一次发送到服务器

http dart flutter dio

2
推荐指数
1
解决办法
9179
查看次数

Flutter:无法使用dio获取数组json到对象列表

我试图加载数组 json(没有键的数组)并获取到对象列表中,这是我的示例代码:

我的 ApiCliet :

Future<List<OnBoardingModel>> fetchOnboarding() async {
    try {
      Response response = await dio.get("api/OnboardingItem");
      return OnBoardingModel.fromJson(response.data) as List;
    } catch (error, stacktrace) {
      throw Exception("Exception occured: $error stackTrace: $stacktrace");
    }
  }
Run Code Online (Sandbox Code Playgroud)

我的对象(使用quicktype生成):

List<OnBoardingModel> onBoardingModelFromJson(String str) => List<OnBoardingModel>.from(json.decode(str).map((x) => OnBoardingModel.fromJson(x)));

String onBoardingModelToJson(List<OnBoardingModel> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));

class OnBoardingModel {
  OnBoardingModel({
    this.id,
    this.judul,
    this.deskripsi,
    this.urlGambar,
  });

  int id;
  String judul;
  String deskripsi;
  String urlGambar;

  factory OnBoardingModel.fromJson(Map<String, dynamic> json) => OnBoardingModel(
    id: json["id"],
    judul: json["judul"],
    deskripsi: json["deskripsi"],
    urlGambar: …
Run Code Online (Sandbox Code Playgroud)

flutter bloc dio

2
推荐指数
1
解决办法
5054
查看次数

Flutter:DateTime 作为改造方法中的参数;DateTime ISO 8061 序列化;改造日期iso8061格式

我想定义一个方法如下:

@GET("/users")
@Headers(<String, dynamic>{"Accept": "application/json", "Authorization": "Basic " + authKey})
Future<List<User>> getUsers(@Query("fromDate") DateTime from, @Query("toDate") DateTime to);
Run Code Online (Sandbox Code Playgroud)

这样DateTime 参数就被序列化为 ISO8061格式,输出查询如下所示:

[获取] https://address.com/users?fromDate=2021-02-21T12:00:00.000Z&toDate=2021-02-27T12:00:00.000Z

我已经在使用 Flutter Retrofit lib (内部使用 Flutter dio)。

我怎样才能做到这一点?

rest datetime retrofit flutter dio

2
推荐指数
1
解决办法
1079
查看次数

模拟 Dio 无法在 Flutter 中测试我的应用程序

我正在尝试使用 Dio 为我的请求编写单元测试,但我不断收到此错误: 类型“Null”不是类型“BaseOptions”的子类型

我尝试以多种不同的方式在 DioMock 上添加基本选项,但测试保持不变。我该如何修复它?

以下是我的网络课程和测试课程。

class NetworkService {

  final Dio dio;

  NetworkService(this.dio){
    dio.options.baseUrl = "https://food2fork.ca/api/recipe/search";
    dio.options.headers['Authorization'] = 'Token 9c8b06d329136da358c2d00e76946b0111ce2c48';

    dio.interceptors.add(InterceptorsWrapper(
      onRequest: (options, handler){
        print('base ${options.baseUrl}');
        print("PATH: ${options.path}");
        return handler.next(options);
      },
      onResponse: (response, handler){
        print("RESPONSE: ${response.statusCode}  PATH: ${response.requestOptions.path}");
    return handler.next(response);
    },
      onError: (DioError e, handler){
        print("ERROR: ${e.response?.statusCode} => PATH: ${e.requestOptions.path}");
        return handler.next(e);
      }
    ));
  }

  Future<List<Recipe>> getRecipe() async {
    var response = await dio.get('/?page=1&query=beef');
    print("response ${response.data}");
    if(response.statusCode == 200){
      final List<Recipe> recipeList = [];
      for(Map<String, dynamic> recipe in …
Run Code Online (Sandbox Code Playgroud)

testing mockito dart flutter dio

2
推荐指数
1
解决办法
5821
查看次数

在 flutter 中收到完整标头之前连接已关闭 http post

我在尝试使用我的 API 时遇到问题,在跟进这个问题后,我陷入了困境,我尝试了不同版本的不同模拟器,但问题仍然存在。

错误:

DioError [DioErrorType.other]: HttpException: Connection closed before full header was received, uri = http://10.0.2.2:7108/Users/authenticate
Run Code Online (Sandbox Code Playgroud)

扑医生

在此输入图像描述

HTTP 邮递

class AuthenticateRemoteApi extends AuthenticateGateway {
  final AuthenticateMapper _authenticateMapper = AuthenticateMapper();

  @override
  Future<SesionUser> login(Authenticate user) async {
    var dio = Dio();
    dio.options.headers['content-Type'] = 'application/json';
    String url = 'http://10.0.2.2:7108/Users/authenticate';

    try {
      Response response = await dio.post(url, data: authenticateModelToJson(user));
      return _authenticateMapper.fromMap(jsonDecode(response.data));
    } catch (e) {
      throw Exception(e);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

android-studio flutter dio

2
推荐指数
1
解决办法
1万
查看次数