前提・実現したいこと
Flutter(Dart)を用いて、外部APIにアクセスして情報を取得するシステムを作っています。
HotPepperのAPIから情報を取得するテストとして、ターミナルに取得した情報を表示するプログラムを実行する際にエラーが発生しました。
参考にしたサイト:https://qiita.com/abouch/items/90107b330bb126a6f742
発生している問題・エラーメッセージ
await http.get(Uri.parse(url)).then((response)...
の部分で、以下のエラーが発生した。
Error: XMLHttpRequest error. dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 909:28 get current packages/http/src/browser_client.dart 71:22 <fn> dart-sdk/lib/async/zone.dart 1613:54 runUnary dart-sdk/lib/async/future_impl.dart 155:18 handleValue dart-sdk/lib/async/future_impl.dart 707:44 handleValueCallback dart-sdk/lib/async/future_impl.dart 736:13 _propagateToListeners dart-sdk/lib/async/future_impl.dart 533:7 [_complete] dart-sdk/lib/async/stream_pipe.dart 61:11 _cancelAndValue dart-sdk/lib/async/stream.dart 1219:7 <fn> dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 324:14 _checkAndCall dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 329:39 dcall dart-sdk/lib/html/dart2js/html_dart2js.dart 37307:58 <fn> at Object.createErrorWithStack (http://localhost:55435/dart_sdk.js:5054:12) at Object._rethrow (http://localhost:55435/dart_sdk.js:37670:16) at async._AsyncCallbackEntry.new.callback (http://localhost:55435/dart_sdk.js:37666:13) at Object._microtaskLoop (http://localhost:55435/dart_sdk.js:37526:13) at _startMicrotaskLoop (http://localhost:55435/dart_sdk.js:37532:13) at http://localhost:55435/dart_sdk.js:33303:9
該当のソースコード
dart
1import 'package:flutter/material.dart'; //google提供のUIデザイン 2import 'package:http/http.dart' as http; //httpリクエスト用 3import 'dart:async'; //非同期処理用 4import 'dart:convert'; //httpレスポンスをJSON形式に変換用 5 6void main() { 7 HotPepperClient.fetchHotPepper().then((restaurants) => { 8 restaurants?.forEach((restaurant) => {print(restaurant.name)}) 9 }); 10} 11 12class HotPepper { 13 (略) 14} 15 16class HotPepperClient { 17 static Future<List<HotPepper>?> fetchHotPepper() async { 18 String baseUrl = 19 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=******************'; 20 String url = baseUrl + "&lat=**.*****&lng=**.*****&format=json"; 21 print(url); 22 await http.get(Uri.parse(url)).then((response) { 23 print(response); 24 if (response.statusCode == 200) { 25 final List<dynamic> jsonArray = json.decode(response.body); 26 return jsonArray.map((json) => HotPepper.fromJson(json)).toList(); 27 } else { 28 throw Exception('Failed to load article'); 29 } 30 }); 31 } 32}
試したこと
- URLは正しいことを確認しています(ブラウザ直打ちで、json形式で取得できた)
- エラーについて調査しましたが、サーバー側を改変しなければならないものが多く、クライアント側で解決する方法が見つかりませんでした
- https://www.fixes.pub/program/452586.html
実行環境
- Mac Book Pro (intel)
- VS Code
- Chrome (Web)
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。