我正在尝试使用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:基数为10的数字无效
有什么想法吗?
谢谢!
答案 0 :(得分:3)
问题在于方案。您不必通过Uri.http
或Uri.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);
}
}
,如果需要设置更多内容(例如http client
),请使用其User Agents
。
答案 1 :(得分:3)
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}'});