Reputation: 21
I need to fetch data from API but my try-catch fails with SyntaxError: Unexpected token < in JSON at position 0.
Code:
String problems;
try {
final response = await http.get('http://myURL',headers: {"Accept": "application/json"});
log("after http");
if (response.statusCode == 200) {
final data = json.decode(response.body);
problems = data["IsSuccess"];
return problems.toString();
} else {
throw Exception('Failed to load status data');
}
} catch (exc) {
log("catch:" + exc.toString());
}
}
Upvotes: 2
Views: 7241
Reputation: 1
First encode your Data after sending time convert it into toString() like HashMap.toString().
Upvotes: -1
Reputation: 6229
NetService:
import 'dart:convert';
import 'package:http/http.dart' as http;
class NetService {
/* ---------------------------------------------------------------------------- */
static Future<T> getJson<T>(String url) {
return http.get(Uri.parse(url))
.then((response) {
if (response.statusCode == 200) {
return jsonDecode(response.body) as T;
}
print('Status Code : ${response.statusCode}...');
return null;
})
.catchError((err) => print(err));
}
}
Main:
import 'dart:async';
import 'package:_samples2/networking.dart';
class IOT {
List data;
FutureOr<void> fetchMeasurements() async {
await NetService.getJson<Map<String, dynamic>>('http://iot.productio.net/api/Measurement/GetMeasurements')
.then((response) {
data = (response != null && response['IsSuccess'])
? response['Entity']
: null;
})
.whenComplete(() => print('Fetching done!....'));
}
}
void main(List<String> args) async {
var iot = IOT();
await iot.fetchMeasurements();
print(iot.data.take(3).toString());
}
Result:
Fetching done!....
({Id: 21315, MeasurementDate: 2021-02-18T22:06:20.8365195, Temperature: 20.6, Humidity: 36.8, Misto: loznice}, {Id: 21314, MeasurementDate: 2021-02-18T22:01:19.1337516, Temperature: 20.6, Humidity: 37.0, Misto: loznice}, {Id: 21313, MeasurementDate: 2021-02-18T21:56:18.1720883, Temperature: 20.6, Humidity: 36.9, Misto: loznice})
Upvotes: 2