1

HTTP packageAPI リクエストを作成するために使用していますが、リクエストを作成すると が返されますHtml response

import 'package:clima/services/location.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

class LoadingScreen extends StatefulWidget {
  @override
  _LoadingScreenState createState() => _LoadingScreenState();
}

class _LoadingScreenState extends State<LoadingScreen> {
  @override
  void initState() {
    super.initState();
    getLocation();
  }

  void getLocation() async {
    Location location = new Location();
    await location.getCurrentLocation();

    print(location.latitude);
    print(location.longitude);
  }

  void getData() async {
    final url =
        'samples.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=b6907d289e10d714a6e88b30761fae22';
    http.Response response = await http.get(Uri.parse(url));
    print(response.body);
  }

  @override
  Widget build(BuildContext context) {
    getData();
    return Scaffold();
  }
}

ここで印刷response bodyすると、「JSON」ではなくHTMLソースコードが返されます

これは私が応答として得るものです...

応答テキストのイメージ

HTML 応答ではなく、有効な JSON 応答を API から取得する方法についてサポートが必要です。

編集:解決しました!

4

1 に答える 1

2

URL が完全ではありません。

このコードを変更

void getData() async {
    final url =
        'samples.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=b6907d289e10d714a6e88b30761fae22';
    http.Response response = await http.get(Uri.parse(url));
    print(response.body);
  }

これに、

void getData() async {
    final url =
        'https://samples.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=b6907d289e10d714a6e88b30761fae22';
    http.Response response = await http.get(url));
    print(response.body);
  }

うまくいったかどうかお知らせください。

于 2021-05-14T05:25:13.697 に答える