android - Android上的POST错误
问题描述
在 Android 设备上使用此代码发送 POST 请求时出现问题。
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
class NetworkUtil {
// next three lines makes this class a Singleton
static NetworkUtil _instance = new NetworkUtil.internal();
NetworkUtil.internal();
factory NetworkUtil() => _instance;
final JsonDecoder _decoder = new JsonDecoder();
static final baseURL = "https://myurl.com";
Future<dynamic> get(String url) {
return http.get(baseURL+url).then((http.Response response) {
final String res = response.body;
final int statusCode = response.statusCode;
if (statusCode < 200 || statusCode > 400 || json == null) {
throw new Exception("Error while fetching data");
}
return _decoder.convert(res);
});
}
Future<dynamic> post(String url, {Map headers, body, encoding}) {
return http
.post(baseURL+url, body: body, headers: headers, encoding: encoding)
.then((http.Response response) {
final String res = response.body;
final int statusCode = response.statusCode;
if (statusCode < 200 || statusCode > 400 || json == null) {
throw new Exception("Error while fetching data");
}
return _decoder.convert(res);
});
}
}
它抛出一个错误
Instance of 'Future'
E/flutter (13631): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter (13631): HandshakeException: Handshake error in client (OS Error:
E/flutter (13631): CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:363))
E/flutter (13631): #0 IOClient.send (package:http/src/io_client.dart:30:23)
E/flutter (13631): <asynchronous suspension>
E/flutter (13631): #1 BaseClient._sendUnstreamed (package:http/src/base_client.dart:171:38)
E/flutter (13631): <asynchronous suspension>
E/flutter (13631): #2 BaseClient.post (package:http/src/base_client.dart:56:5)
E/flutter (13631): #3 post.<anonymous closure> (package:http/http.dart:70:34)
E/flutter (13631): #4 _withClient (package:http/http.dart:167:20)
E/flutter (13631): <asynchronous suspension>
E/flutter (13631): #5 post (package:http/http.dart:70:3)
E/flutter (13631): #6 NetworkUtil.post (package:queue/class/network_util.dart:28:10)
E/flutter (13631): #7 MakeVerifyTelephoneButtonState._submitPressed (file:///Users/skulltree/Documents/TwinSynergyProjects/crossPlatform/manaqueue/lib/ui/verifybutton.dart:29:27)
E/flutter (13631): #8 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
E/flutter (13631): #9 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:161:9)
E/flutter (13631): #10 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:123:7)
E/flutter (13631): #11 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter (13631): #12 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:147:20)
E/flutter (13631): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22)
E/flutter (13631): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7)
E/flutter (13631): #15 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7)
E/flutter (13631): #16 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7)
E/flutter (13631): #17 _invoke1 (dart:ui/hooks.dart:134:13)
E/flutter (13631): #18 _dispatchPointerDataPacket (dart:ui/hooks.dart:91:5)
但是,使用相同的代码,它在 iOS 设备上运行良好。是否有可能我缺少在 Android Studio 或其他任何东西上配置的东西。
解决方案
我发现了问题。
我们使用 Let's encrypt,Android 设备总是有问题,但 iOS 运行良好。
我现在通过切换到付费 SSL 证书来测试它的解决方案。它就像一个魅力。
推荐阅读
- docker - 是否可以将 docker 端口暴露给特定的接口
- javascript - 在 d3.js 的 Javascript 中从 URL 创建多嵌套 JSON
- c# - 如何在 TreeviewItem 中进行文本换行?
- node.js - 在 node.js 中的自定义流上放气
- javascript - 在 try 块中分配值的最佳方法
- css - CSS - 获取复选框值
- go - 如何在高并发系统中创建全局计数器
- git - 远程:匿名访问
/ .git 拒绝。致命:'https://github.com/ 的身份验证失败 / .git/' - android - 如何在滚动时使用回收器视图识别部分适配器的子项的位置
- android - 科尔多瓦构建 android - aapt 超时