标签: dio

DioError [DioErrorType.RESPONSE]: Http 状态错误 [405] [已解决]

我正在post使用Dio创建一个请求,这是我的FormData参数,

    FormData formData = FormData.fromMap({
      'wallet_id': '${dropdownValue.walletId}',
      'member_id': '${_loginModel.memberId}',
      'draw_amount': withdrawalAmountContoller.text,
      'login_password': passwordController.text,
    });

Run Code Online (Sandbox Code Playgroud)

然后我传递params这样的,

Response response = await dio.post(url, data: params);
Run Code Online (Sandbox Code Playgroud)

但我收到请求时出错,

错误[DioError [DioErrorType.RESPONSE]:Http 状态错误[405]] => 路径:https ://vertoindiapay.com/pay/api/withdraw

E/flutter (6703): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:DioError [DioErrorType.RESPONSE]: Http 状态错误 [405]

E/flutter(6703):#0 DioMixin._request._errorInterceptorWrapper。(包:dio/src/dio.dart:848:13)

请帮我解决这个问题。我的网址是=> https://vertoindiapay.com/pay/api/withdraw


虽然这在邮递员中工作正常,

在此处输入图片说明

http flutter flutter-dependencies dio

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

如何在 Flutter 中使用 Dio 处理超时错误?

我正在使用 Dio 来处理 API 功能。

这是我的代码:

  Future<List<ItemModel>> getItems() async {
    try {
      Response response = await dio.get("$_apiUrl$_itemEndPoint",
          options: Options(headers: {
            "Accept": 'application/json',
          }));

      List<ItemModel> _items = List<ItemModel>();

      response.data['data']?.forEach((c) {
        _items.add(ItemModel.fromMap(c));
      });
      return _items;
    } catch (e) {
      throw (e);
    }
  }
Run Code Online (Sandbox Code Playgroud)

如何根据发送和接收超时捕获错误?

dart flutter dio

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

Flutter web http 请求 badCertificateCallback

我想知道您是否可以将我指向具有 http badCertificateCallback 的 Web Flutter 库。我试过DIO,但它给了我一个错误并提交了一个问题,但我还没有收到他们的消息

DIO代码:

Dio dio = new Dio(options);
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
(client) {
client.badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
};

Error: Expected a value of type 'DefaultHttpClientAdapter', but got one of type 'BrowserHttpClientAdapter'
Run Code Online (Sandbox Code Playgroud)

我也试过http,但它没有坏的证书回调,我们可以使用它,但它不兼容网络

HttpClient httpClient = new HttpClient();
    httpClient.badCertificateCallback =
        ((X509Certificate cert, String host, int port) => true);
    IOClient ioClient = new IOClient(httpClient);
response = await ioClient.post(url, body: data, headers: headers);
Run Code Online (Sandbox Code Playgroud)

任何评论都会更值得赞赏。

提前致谢,丹尼尔

http flutter flutter-web dio

5
推荐指数
1
解决办法
1504
查看次数

Flutter Dio 发布一个带有数组的对象

我正在尝试使用对象向 api 发布请求“

var params =  {
    "item": "itemx",
    "options": [1,2,3],
    };
    print(params);
    try {
      Response response = await _dio.post(getAddToCartURL,
          queryParameters: params,
          options: Options(headers: {
            HttpHeaders.contentTypeHeader: "application/json",
          }));

    } catch (error, stackTrace) {
      print("Exception occurred: $error  stackTrace: $stackTrace");
      return false;
    }
Run Code Online (Sandbox Code Playgroud)

Dio 将对象发送为:

POST /api/add-to-cart/?item=itemx&options%5B%5D=1&options%5B%5D=2&options%5B%5D=3 
Run Code Online (Sandbox Code Playgroud)

其中 api 将其识别为错误的请求。

我在这里做什么错了?我什至尝试将列表设为 ["1","2","3"],它是一样的。

http dart flutter dio

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

上传图片/文件到 Strapi (Flutter Web)

我正在尝试通过 Flutter Web 将图像上传到 Strapi。我知道(从此链接)我需要使用 FormData 来做到这一点。我研究了很多方法来做到这一点,我偶然发现了Dio,当然还有Http

两种解决方案都给了我错误: Unsupported operation: MultipartFile is only supported where dart:io is available.

我试过这个代码:

var request = new http.MultipartRequest("POST", Uri.parse(url));
    request.files.add(
      await http.MultipartFile.fromPath(
        "files",
        imageFilePath,
      ),
    );
    request.send().then((response) {
      if (response.statusCode == 200) print("Uploaded!");
      print(response.statusCode);
    }).catchError((e) => print(e));
Run Code Online (Sandbox Code Playgroud)

正如这里所建议的。

当我使用MultipartFile.fromBytes(...).

我只是想上传一个文件,因此我认为我的身体应该只包含 FormData ,正如Strapi 的文档中files提到的那样

form-data flutter strapi dio flutter-http

5
推荐指数
1
解决办法
2071
查看次数

SocketException:主机查找失败:'...com'(操作系统错误:提供了节点名或服务名,或未知,errno = 8)

我们处于生产应用程序面临以下套接字异常并且在此之后无法执行任何其他网络操作的情况。 

DioError [DioErrorType.DEFAULT]: SocketException: Failed host lookup: ‘xyz.abc.com’ (OS Error: nodename nor servname provided, or not known, errno = 8)
Run Code Online (Sandbox Code Playgroud)

注意:反复遇到一位使用 iPhone X、iOS 14.4 的用户

我们使用Dio作为网络客户端,使用Retrofit,它在内部使用来自 dart 的 HttpClient。使用Dio,模拟环境无法重现异常,但直接使用HttpClient,可以在iOS模拟器中使用以下代码重现相同的异常。

HttpClient userAgent = new HttpClient();
  bool run = true;
  while (run) {
    try {
      await userAgent.getUrl(Uri.parse('https://www.google.com'));
      print('Number of api executed');
    } catch (e) {
      print(e);
      if (e is SocketException) {
        if ((e as SocketException).osError.errorCode == 8)
          print('***** Exception Caught *****');
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

一旦抛出异常,HttpClient 就无法从该陈旧状态中恢复,并且所有其他 API 请求都开始失败并出现相同的错误。 …

socketexception retrofit dart-http flutter dio

5
推荐指数
1
解决办法
1620
查看次数

请求 python 和 dio flutter 不返回相同的结果

我有类似的python代码

import requests
headers = {'Host': 'www.google.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0','Accept': '*/*','Accept-Language': 'en-US,en;q=0.5','Accept-Encoding': 'gzip, deflate, br','Referer': 'https://www.google.com/','Origin': 'https://www.google.com','Connection': 'keep-alive','Content-Length': '0','TE': 'Trailers'}
response = requests.get("https://www.google.co.in/search?tbs=sbi:AMhZZivWlHh9fYSFQ1SYSgdWdYroq7vlNqRWbgzAeOHgb1_1aVO6EfHf9oo4N6kMf9pR-MjgXMeP5EG4VTTeZ5UujHI12znActXxMoyDqKsqI0cgI9YJ_11xd5R0DiKpo2drjWKnK2lNgGSGJYKdDFJ0ZNKhfBTUn3WKSmG72gLR07uPXdby9jCXC1KJFqBSpaGNrJ6Zc6LSQymwNqqJZrO8iwNYRPzJsoHlWUZNSoZ1X18Ii8X7x0TrlgSz0HySJ_1QO3E8LLbaE0rZluLVBsk6t0GDW2MR4IXs3dCuCcTMPDgqZS-CMks6Tgc6xkDLyLLBC051S6gNxRhXpZ3FVg75Vlt_1nAptI_1Vpw",headers=headers)
print(len(response.text))
Run Code Online (Sandbox Code Playgroud)

和颤振代码,如

import 'package:dio/dio.dart';
Dio dio = Dio();
var headers = {'Host': 'www.google.com','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0','Accept': '*/*','Accept-Language': 'en-US,en;q=0.5','Accept-Encoding': 'gzip, deflate, br','Referer': 'https://www.google.com/','Origin': 'https://www.google.com','Connection': 'keep-alive','Content-Length': '0','TE': 'Trailers'};
var response = await dio.get("https://www.google.co.in/search?tbs=sbi:AMhZZivWlHh9fYSFQ1SYSgdWdYroq7vlNqRWbgzAeOHgb1_1aVO6EfHf9oo4N6kMf9pR-MjgXMeP5EG4VTTeZ5UujHI12znActXxMoyDqKsqI0cgI9YJ_11xd5R0DiKpo2drjWKnK2lNgGSGJYKdDFJ0ZNKhfBTUn3WKSmG72gLR07uPXdby9jCXC1KJFqBSpaGNrJ6Zc6LSQymwNqqJZrO8iwNYRPzJsoHlWUZNSoZ1X18Ii8X7x0TrlgSz0HySJ_1QO3E8LLbaE0rZluLVBsk6t0GDW2MR4IXs3dCuCcTMPDgqZS-CMks6Tgc6xkDLyLLBC051S6gNxRhXpZ3FVg75Vlt_1nAptI_1Vpw",options: Options(headers: headers,followRedirects: true));
var a=response.data;
print(a.length);
Run Code Online (Sandbox Code Playgroud)

问题是我从两个包中得到的结果不同。我想要python的输出,但必须在flutter中实现python代码。任何其他包的颤振解决方案也很好......

python python-requests flutter dio

5
推荐指数
0
解决办法
50
查看次数

注解必须是 const 变量引用或 const 构造函数调用

我有一个错误;注释必须是 const 变量引用或 const 构造函数调用。dart(invalid_annotation) 名称“Headers”在库“package:dio/src/headers.dart(通过 package:dio/dio.dart)”和“中定义”包:retrofit/http.dart'。尝试对其中一个导入指令使用“作为前缀”,或者对除其中一个导入指令之外的所有导入指令隐藏名称。

我想传递一个 jwt 令牌。但我无法通过标头传递它,因为我收到错误

// import 'dart:convert';
// import 'dart:io';
// import 'package:amc_new/model/client_amc.dart';
// import 'package:http/http.dart' as http;
// import 'package:flutter_config/flutter_config.dart';

// String uri = FlutterConfig.get('API_URL');

// class ClientAmcService {
//   // ignore: missing_return
//   Future<ClientAmc> getclientAmc(String amcNo) async {
//     try {
//       var response = await http.get(
//         uri + '/report/getamcreport/$amcNo',
//         headers: {
//           HttpHeaders.authorizationHeader: 'jwt',
//         },
//       );
//       print("------------------------------------------------");
//       if (response.statusCode == 200) {
//         print(response.body);
// …
Run Code Online (Sandbox Code Playgroud)

dart retrofit flutter dio

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

类型“ExpandIterable&lt;InterfaceType, MethodElement&gt;”不是“iterable”类型“Iterable&lt;MethodElementImpl&gt;”的子类型

我想使用 dio 和 build_runner 创建一个 api 服务。但是当我flutter pub run build_runner在终端上运行此命令时出现此错误

[严重] Retrofit_generator:在 lib/web_services/api_services.dart 上进行改造:

类型“ExpandIterable<InterfaceType, MethodElement>”不是“iterable”的“Iterable”类型的子类型

这是我的 api 服务代码。

part 'api_services.g.dart';

@RestApi(baseUrl: Preferences.hrmsAPI)
abstract class RestClient {
  factory RestClient(Dio dio) = _RestClient;

  @FormUrlEncoded()
  @GET('config')
  Future<WrappedResponse> config();

  @FormUrlEncoded()
  @GET('profile')
  Future<WrappedResponse> profile(@Header('Authorization') String token);
}
Run Code Online (Sandbox Code Playgroud)

mobile dart flutter dio build-runner

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

如何使用flutter中的retrofit在dio api调用中设置responseType?

我正在尝试在对 的 API 调用之一中设置响应类型bytes,但在改造中我没有找到任何设置响应类型的选项。

我使用 dio 作为 http 客户端。

  @GET(API.blah_blah)
  // I want to set the response Type I want to get, instead of json I need bytes
  Future<dynamic> getSomething();
Run Code Online (Sandbox Code Playgroud)

生成的文件中类似这样的内容。

   final _result = await _dio.request('some api url',
    queryParameters: queryParameters,
    options: RequestOptions(
        method: 'GET',
         // responseType: ResponseType.bytes,// this I have manually added
        extra: _extra,
        baseUrl: baseUrl),
    data: _data);
Run Code Online (Sandbox Code Playgroud)

retrofit flutter dio

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