web-dev-qa-db-ja.com

Flutterを使用してローカルホストを呼び出すことができません。ランダムなポートがHTTPGET呼び出しに割り当てられています

Dart httpライブラリ を使用してHTTP呼び出しを行う必要があるFlutterアプリを構築しようとしています。だからここに私が電話をかけるために使うfuの抜粋があります、

_import 'package:flutter/material.Dart';
import 'Dart:async';
import 'Dart:convert';
import 'Dart:io';
import 'package:http/http.Dart' as http;

Future<List> getData() async {
    List data = new List();
    var httpClient = new HttpClient();
    var request = await httpClient.get("localhost", 5000, '/search?query=hello');
    var response = await request.close();
    if (response.statusCode == HttpStatus.OK) {
      var jsonString = await response.transform(utf8.decoder).join();
      data = json.decode(jsonString);
      print(data);
      return data;
    } else {
      return data;
    }
  }
_

コードからgetData()を呼び出すと、次のエラーが発生します

_E/flutter (30949): [ERROR:topaz/lib/tonic/logging/Dart_error.cc(16)] Unhandled exception:
E/flutter (30949): SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 46999
E/flutter (30949): #0      _HomePageState.getData (file:///home/bholagabbar/AndroidStudioProjects/fnd_modile_client/lib/main.Dart:75:19)
E/flutter (30949): <asynchronous suspension>
E/flutter (30949): #1      _HomePageState.build.<anonymous closure> (file:///home/bholagabbar/AndroidStudioProjects/fnd_modile_client/lib/main.Dart:56:15)
E/flutter (30949): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.Dart:478:14)
E/flutter (30949): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.Dart:530:30)
E/flutter (30949): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.Dart:102:24)
E/flutter (30949): #5      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.Dart:161:9)
E/flutter (30949): #6      TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.Dart:94:7)
E/flutter (30949): #7      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.Dart:315:9)
E/flutter (30949): #8      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.Dart:73:12)
E/flutter (30949): #9      PointerRouter.route (package:flutter/src/gestures/pointer_router.Dart:101:11)
E/flutter (30949): #10     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.Dart:143:19)
E/flutter (30949): #11     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.Dart:121:22)
E/flutter (30949): #12     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.Dart:101:7)
E/flutter (30949): #13     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.Dart:64:7)
E/flutter (30949): #14     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.Dart:48:7)
E/flutter (30949): #15     _invoke1 (Dart:ui/hooks.Dart:134:13)
E/flutter (30949): #16     _dispatchPointerDataPacket (Dart:ui/hooks.Dart:91:5)
_

私のAPIは正常に稼働しています。エラーログでわかるように、リクエストは処理されていないようです。ここでの問題は正確には何ですか?

記録のために、私はgetgetUrlのすべての順列を試し、さらにlocalhostと_127.0.0.1_を_10.0.2.2_に置き換えてみました。 FlutterのDart httpパッケージでlocalhost:8000をポイントする方法は? 。私は自分の電話でこれを直接テストしています(One Plus 3)

6
bholagabbar

ギュンターの答えは正しいですが、覚えておく必要があることの1つは、ポート番号を変更することを忘れないことです。たとえば、ポートが3002の場合は、次を使用します。

adb reverse tcp:3002 tcp:3002

より一般的な答えは次のとおりです。

adb reverse tcp:<Your Port No> tcp:<Your Port No>
1
taranjeet singh