标签: dio

Flutter - 平台不允许不安全的套接字连接:10.0.2.2

从今天起,每当我尝试登录我的应用程序时,我都会收到 Dio 包抛出的以下错误:SocketException: Insecure socket connections are disallowed by platform: 10.0.2.2

我使用以下设置进行连接:

static BaseOptions options = new BaseOptions(
    baseUrl: "http://10.0.2.2:3000", // on android emulator
    connectTimeout: 5000,
    receiveTimeout: 3000)
Run Code Online (Sandbox Code Playgroud)

因此,类似于(我在 /user/login 处设置了身份验证并正常运行):

var apiLogin = api.dio;
try {
Response response = await apiLogin.post("/user/login",
          options: Options(contentType: "application/json"),
          data: {"email": email, "password": password});
} on DioError catch (e) {
throw Exception([e]);
} 
Run Code Online (Sandbox Code Playgroud)

我有一个在端口 3000 上运行的节点服务器,它连接到(容器化的)mongodb。尝试身份验证时,它立即出现 DioError,我无法在网上的任何地方找到原因。

有谁知道这个错误与什么有关?

编辑[答案]

感谢@lyrics为我指明了正确的方向:从 API 级别 27 及更高级别开始,usesCleartextTraffic 默认为 false,因此阻止传出的 http 请求,需要 HTTPS。

解决方案是将以下内容添加到 AndroidManifest.xml: …

socketexception android-emulator flutter dio

9
推荐指数
1
解决办法
3549
查看次数

使用 Flutter 向 Flask API 发送 http Post-Request(包含图像)

我已经在 CIFAR10 数据集上训练了一个 CNN(占位符,稍后将替换为不同的模型)并将模型集成到烧瓶 API 中。API 托管在 Heroku 上,我现在想使用 Flutter / Dart 在我的手机上拍照,将它们发送到 Flask API,在它们上运行我的训练模型并返回预测。

使用 python,我可以轻松地向我的 API 发出发布请求并返回预测。这是我的简单python代码:

import requests
import json

img = open('some-picture.jpg', 'rb')

files = {'image': img}
response = requests.post("url_to_api", files=files)

print(response.text)
Run Code Online (Sandbox Code Playgroud)

我使用 Flutter / Dart 的时间并不长,我认为发出 htpp 请求的过程比在 python 中复杂一些。有人能给我一些指示或代码,让我可以用我的相机拍照,将它上传到我的 API,并将响应存储在一个变量中吗?这是我的烧瓶 API 的(简化的)python 代码:

from flask import Flask, request
import os
import numpy as np
from PIL import Image
from tensorflow import keras

app = Flask(__name__)
app.config["DEBUG"] = True

model = keras.models.load_model('cifar10_cnn.h5')
labels = ["Airplane", …
Run Code Online (Sandbox Code Playgroud)

api http-post dart flutter dio

9
推荐指数
1
解决办法
1527
查看次数

颤动如何在dio中上传内容类型的文件

你好,我尝试使用 dio 包上传图像,但我必须为图像设置 contentType 但我无法设置它并在设置 MediaType 时出现此错误 ====> 未为类型“AnalyzeData”定义方法“MediaType” .

这是我的代码

 Dio dio = new Dio();
 dio.options.headers = {
  'token': token,
 };


try {
  String ip = await getServerIP();
  FormData formData = new FormData.fromMap({
     "front":front==null?null:  MultipartFile.fromFileSync(
      front,
      filename: "image.png",
      contentType: MediaType()  <=== get error in this line
    ),
 }
 );
  response = await dio.post("$url", data: formData);
Run Code Online (Sandbox Code Playgroud)

我如何修复它我使用的是最新版本的 Dio 包

flutter dio

7
推荐指数
3
解决办法
3586
查看次数

如何调整 flutter http、dio 或 flutter_downloader 上的下载缓冲区大小?

在此输入图像描述

我想下载一个大约300MB. 它比我想象的要慢很多,当我查看日志时,我看到它正在获取大小约为 的字节8KB。即使我寻找其他颤振库,我也没有找到调整下载缓冲区大小的方法。我该如何调整呢?

flutter dio flutter-http

7
推荐指数
1
解决办法
2519
查看次数

Flutter Dart Dio Get Request 太慢了

我在数字海洋中托管一个空间 - 它基本上是数字海洋的 Amazon S3 等价物。我的 dio 问题是,我正在使用 dio 向 10MB 大小的文件发出获取请求。该请求在我的手机上需要大约 9 秒,但在我的浏览器中需要 3 秒。我的自定义后端也有这个问题。使用 dio(使用 dart 的 http 模块)发出的请求似乎非常慢。我需要解决这个问题,因为我需要不时向用户传输 50MB 的数据。为什么 dio 对 GET 请求反应缓慢?

我怀疑这可能是这里的根本原因检查

await Dio().get(
        "Remote_Url_I_can_not_share",
        onReceiveProgress: (int downloaded, int total) {
          listener
              .call((downloaded.toDouble() / total.toDouble() * metadataPerc));
        },
        cancelToken: _cancelToken,
      ).catchError((err) => throw err);
Run Code Online (Sandbox Code Playgroud)

dart flutter dio

7
推荐指数
1
解决办法
2125
查看次数

从服务器获取结果后,在自动完成中不会调用 optionsViewBuilder

我正在尝试创建一个自动建议输入,该输入从后端 API 获取结果。这是我的代码:

import 'dart:async';

import 'package:flutter/material.dart';

import 'package:hello_world/api.dart';
import 'package:hello_world/autocomplete_item.dart';

class Debouncer {
  final int milliseconds;

  VoidCallback? action;
  Timer? _timer;

  Debouncer({this.milliseconds = 250});

  run(VoidCallback action) {
    _timer?.cancel();
    _timer = Timer(Duration(milliseconds: milliseconds), action);
  }
}

class AutoCompleteInput extends StatefulWidget {
  const AutoCompleteInput({
    Key? key,
    this.label = 'Suggest',
    this.textInputAction,
    this.validator,
    this.errorMessage,
  }) : super(key: key);

  final String label;

  final TextInputAction? textInputAction;

  final FormFieldValidator<String>? validator;

  final String? errorMessage;

  @override
  _AutoCompleteInputState createState() => _AutoCompleteInputState();
}

class _AutoCompleteInputState extends State<AutoCompleteInput> {
  final _debouncer = …
Run Code Online (Sandbox Code Playgroud)

dart flutter dio

7
推荐指数
1
解决办法
2111
查看次数

DioError [DioErrorType.response]:Http 状态错误 [401]

final dio = Dio();
    try {
      await dio.request(
        'https://api.example.com/api/v1/auth/validateMobile',
        data: {"phoneNo": "+91999999999"},
        options: Options(
          method: 'GET',
          headers: {
            HttpHeaders.authorizationHeader:
                'Bearer $token',
            'content-Type': 'application/json'
          },
        ),
      );
    } on DioError catch (e) {
      print(e);
    }
Run Code Online (Sandbox Code Playgroud)
I/flutter (16336): DioError [DioErrorType.response]: Http status error [401]
I/flutter (16336): #0      DioMixin.assureDioError (package:dio/src/dio_mixin.dart:819:20)
I/flutter (16336): #1      DioMixin._dispatchRequest (package:dio/src/dio_mixin.dart:678:13)
I/flutter (16336): <asynchronous suspension>
I/flutter (16336): #2      DioMixin.fetch.<anonymous closure>.<anonymous closure> (package:dio/src/dio_mixin.dart)
I/flutter (16336): <asynchronous suspension>
Run Code Online (Sandbox Code Playgroud)

即使我使用正确的令牌传递授权标头,我仍收到 401 错误。感谢您的帮助。

dart flutter dio

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

DioError [DioErrorType.DEFAULT]:将对象转换为可编码对象失败:“FormData”实例

我是颤振新手。当我尝试将数据上传到服务器时,我遇到了一些问题,例如: 1.NoSuchMethodError:在 null 上调用 getter 'friendsList' 2.DioError [DioErrorType.DEFAULT]:将对象转换为可编码对象失败:'FormData' 实例

import 'dart:convert';
import 'dart:io';

import 'package:data_collection/helperClass/testForAddButton.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:http_parser/http_parser.dart';

class AutoCompleteDemo extends StatefulWidget {
  @override
  _AutoCompleteDemoState createState() => _AutoCompleteDemoState();
}

class _AutoCompleteDemoState extends State<AutoCompleteDemo> {
  final hospitalNameEng = TextEditingController();
  final _serviceKey = GlobalKey<FormState>();
  static List<String> friendsList = [];
  File imageFile;
  String servicejson;
  bool loading = true;

  @override
  void initState() {
    super.initState();
  }

  //for camera dialogBox
  Future<void> _showChoiceDialog(BuildContext context) {
    return showDialog(
        context: context,
        builder: (BuildContext context) …
Run Code Online (Sandbox Code Playgroud)

flutter dio

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

Dio 在开始新的 API 请求之前取消当前正在运行的 API

我正在使用 DIO 包进行 API 请求,但问题是当我请求另一个 API 时,而第一个 API 仍在进行中。

它不会取消第一个请求。这两个 API 同时运行,这在我的应用程序场景中并不理想。

class DioClient {

 static BaseOptions options = BaseOptions(baseUrl: baseUrl);

   Dio _dio = Dio(options);

   Future<dynamic> postFormData(
      {dynamic data, String url, dynamic header}) async {
    final data1 = data;
    var formData = FormData.fromMap(data1);

    try {
      var response = await _dio.post(url,
          options: Options(headers: header), data: formData);

      return response.data;
    } catch (e) {
      throw e;
    }}}
Run Code Online (Sandbox Code Playgroud)

api flutter dio

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

Flutter web - dio将post请求改为options请求

我正在package:dioFlutter Web 应用程序中使用。

然而,每当我发送 POST 请求时,它就会更改为 OPTIONS 请求。发出 API 请求的函数如下所示:

Future<LoginResponse> login(LoginRequest request) async {
    final dio = Dio(BaseOptions(baseUrl: "http://localhost:8000"));
    final response = await dio.post("/login", data: request.toJson());
    return LoginResponse.fromJson(jsonDecode(response.data));
}
Run Code Online (Sandbox Code Playgroud)

此代码将OPTIONS请求发送到http://localhost:8000/login. 如果我将该端点添加到我的服务器,它就可以工作。

如果我手动从邮递员发送 POST 请求,它也可以工作。

如果我将此代码更改为其他方法(例如dio.delete(...)),它也会映射到OPTIONS请求。

为什么要dio重写我的请求?

http dart flutter flutter-web dio

6
推荐指数
1
解决办法
4188
查看次数