如何在Flutter中进行https调用?

问题描述 投票:0回答:2

我是颤振开发的新手。我正在努力使 https 调用正常工作。每当我调用 https url 时,它都会抛出以下错误:

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

下面是我正在使用的代码,

final ioc = new HttpClient();
    ioc.badCertificateCallback =
        (X509Certificate cert, String host, int port) => true;
    final http = new IOClient(ioc);
    return http
        .post(url, body: body, headers: headers, encoding: encoding)
        .then((response) {
      final String res = response.body;
      final int statusCode = response.statusCode;

      if (statusCode < 200 || statusCode > 400 || json == null) {
        throw new Exception("Error while posting data");
      }
      return _decoder.convert(res);
    });

我检查了下面的几个链接和更多链接,并尝试了所有这些链接,但似乎没有任何效果。

另请注意,我可以从浏览器访问服务器。也可以从 iOS 应用程序访问同一服务器(使用 XCode 构建)。从 iOS 我可以访问服务器。

请帮忙!!!

api flutter http web-services https
2个回答
1
投票

http
包提供了从互联网获取数据的最简单方法。

要安装

http
包,请将其添加到
pubspec.yaml
文件的依赖项部分。您可以在
here
找到最新版本的 http

软件包
dependencies:
  http: <latest_version>

导入http包。

import 'package:http/http.dart' as http;

此外,在您的

AndroidManifest.xml
文件中添加互联网权限。

<uses-permission android:name="android.permission.INTERNET" />

然后像下面的函数一样,您将能够获取/获取/发布 HTTP 调用

Future<http.Response> getchData() {
  return http.get('https://jsonplaceholder.typicode.com/albums/1');
}

对于高级 HTTP 调用和管理,您可以使用 Dio 插件


0
投票

在上面导入这两个包

 import 'dart:convert';
    import 'package:http/http.dart';

然后这是示例代码

    void main(List<String> arguments) async {
      
      var url =
          Uri.https('www.googleapis.com');
    
      // Await the http get response, then decode the json-formatted response.
    
      var response = await http.get(url);

      if (response.statusCode == 200) {

        var jsonResponse =
            convert.jsonDecode(response.body) as Map<String, dynamic>;
        var itemCount = jsonResponse['totalItems'];
        print('Count: $itemCount.');
      
} else {
        print('Request failed with status: ${response.statusCode}.');
      }
    }
© www.soinside.com 2019 - 2024. All rights reserved.