【问题标题】:FormatException: Invalid radix-10 numberFormatException:无效的基数 10 数
【发布时间】:2019-05-26 03:55:20
【问题描述】:

我正在尝试使用 Flutter 和 HttpClient 接收获取请求。

这是我想要完成的完整代码。

  getSuggest() async {
    try {
      var httpClient = new HttpClient();
      var uri = new Uri.http(
          'http://autocomplete.geocoder.api.here.com', '/6.2/suggest.json', {
        'app_id': 'APP_ID',
        'app_code': 'APP_CODE',
        'query': '123 Main Street',
        'country': 'USA',
        'language': 'en',
      });
      var request = await httpClient.getUrl(uri);
      var response = await request.close();
      var responseBody = await response.transform(Utf8Decoder()).join();
      Map data = jsonDecode(responseBody);
      print(data);
    } catch (error) {
      print(error);
    }
  }

我正在使用

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

但是我的代码总是被发送到print(error) 并且打印的错误是

FormatException: 无效的 radix-10 数字

有什么想法吗?

谢谢!!

【问题讨论】:

  • 你能发布整个错误日志吗?
  • 打印response.body并发布输出

标签: http flutter radix


【解决方案1】:

问题在于方案。您不必在Uri.httpUri.https 方法中设置它,它是自动设置的,因此请使用以下内容进行更改:

Uri.http(
        'autocomplete.geocoder.api.here.com', '/6.2/suggest.json', {
        'app_id': 'APP_ID',
        'app_code': 'APP_CODE',
        'query': '123 Main Street',
        'country': 'USA',
        'language': 'en',
      });

我建议使用http 包并执行类似的操作:

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


final json = const JsonCodec();
getSuggest() async {
    try {
      var uri = Uri.http(
          'autocomplete.geocoder.api.here.com', '/6.2/suggest.json', {
        'app_id': 'APP_ID',
        'app_code': 'APP_CODE',
        'query': '123 Main Street',
        'country': 'USA',
        'language': 'en',
      });
      var response = await http.get(uri);
      var data = json.decode(response.body);
      print(data);
    } catch (error) {
      print(error);
    }
  }

如果您需要设置更多内容(例如User Agents),请使用其http client

【讨论】:

  • 这太完美了!
【解决方案2】:
var url = Uri.https('http://192.168.43.5:3000/api', '/auth/getAllUsers', {'q': '{http}'});

此错误的原因是您不必像上面那样提供 https://。基本网址就足够了。此外,您应该使用Uri.http 而不是Uri.https,因为您的URL 使用http://(而不是https://)。你应该这样做。

var url = Uri.http('192.168.43.5:3000/api', '/auth/getAllUsers', {'q': '{http}'});

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2013-05-31
    • 2018-03-13
    • 1970-01-01
    • 2021-08-06
    • 2018-09-05
    • 2021-06-25
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多