未处理的异常:ClientException:接收数据时连接关闭,在颤振中

问题描述 投票:0回答:1

我正在尝试使用 Eden Ai API 生成图像,但它显示异常。我哪里错了,我不明白。

\[ERROR:flutter/runtime/dart_vm_initializer.cc(41)\] Unhandled Exception: ClientException: Connection closed while receiving data, uri=https://api.edenai.run/v2/image/generation

E/flutter ( 4656): #0      IOClient.send.\<anonymous closure\> (package:http/src/io_client.dart:110:13)

E/flutter ( 4656): #1      Stream.handleError.\<anonymous closure\> (dart:async/stream.dart:931:16)

E/flutter ( 4656): #2      \_HandleErrorStream.\_handleError (dart:async/stream_pipe.dart:269:17)

E/flutter ( 4656): #3      \_ForwardingStreamSubscription.\_handleError (dart:async/stream_pipe.dart:157:13)

E/flutter ( 4656): #4      \_HttpClientResponse.listen.\<anonymous closure\> (dart:\_http/http_impl.dart:720:16)

E/flutter ( 4656): #5      \_RootZone.runBinaryGuarded (dart:async/zone.dart:1606:10)

E/flutter ( 4656): #6      \_BufferingStreamSubscription.\_sendError.sendError (dart:async/stream_impl.dart:358:15)

E/flutter ( 4656): #7      \_BufferingStreamSubscription.\_sendError (dart:async/stream_impl.dart:376:7)

E/flutter ( 4656): #8      \_BufferingStreamSubscription.\_addError (dart:async/stream_impl.dart:280:7)

E/flutter ( 4656): #9      \_ForwardingStreamSubscription.\_addError (dart:async/stream_pipe.dart:128:11)

E/flutter ( 4656): #10     \_addErrorWithReplacement (dart:async/stream_pipe.dart:176:8)

E/flutter ( 4656): #11     \_HandleErrorStream.\_handleError (dart:async/stream_pipe.dart:274:11)

E/flutter ( 4656): #12     \_ForwardingStreamSubscription.\_handleError (dart:async/stream_pipe.dart:157:13)

E/flutter ( 4656): #13     \_RootZone.runBinaryGuarded (dart:async/zone.dart:1606:10)

E/flutter ( 4656): #14     \_BufferingStreamSubscription.\_sendError.sendError (dart:async/stream_impl.dart:358:15)

E/flutter ( 4656): #15     \_BufferingStreamSubscription.\_sendError (dart:async/stream_impl.dart:376:7)

E/flutter ( 4656): #16     \_BufferingStreamSubscription.\_addError (dart:async/stream_impl.dart:280:7)

E/flutter ( 4656): #17     \_SyncStreamControllerDispatch.\_sendError (dart:async/stream_controller.dart:788:19)

E/flutter ( 4656): #18     \_StreamController.\_addError (dart:async/stream_controller.dart:666:7)

E/flutter ( 4656): #19     \_StreamController.addError (dart:async/stream_controller.dart:620:5)

E/flutter ( 4656): #20     \_HttpParser.\_reportBodyError (dart:\_http/http_parser.dart:1200:22)

E/flutter ( 4656): #21     \_HttpParser.\_onDone (dart:\_http/http_parser.dart:898:9)

E/flutter ( 4656): #22     \_RootZone.runGuarded (dart:async/zone.dart:1582:10)

E/flutter ( 4656): #23     \_BufferingStreamSubscription.\_sendDone.sendDone (dart:async/stream_impl.dart:392:13)

E/flutter ( 4656): #24     \_BufferingStreamSubscription.\_sendDone (dart:async/stream_impl.dart:402:7)

E/flutter ( 4656): #25     \_BufferingStreamSubscription.\_close (dart:async/stream_impl.dart:291:7)

E/flutter ( 4656): #26     \_SyncStreamControllerDispatch.\_sendDone (dart:async/stream_controller.dart:792:19)

E/flutter ( 4656): #27     \_StreamController.\_closeUnchecked (dart:async/stream_controller.dart:647:7)

E/flutter ( 4656): #28     \_StreamController.close (dart:async/stream_controller.dart:640:5)

E/flutter ( 4656): #29     \_Socket.\_onError (dart:io-patch/socket_patch.dart:2471:19)

E/flutter ( 4656): #30     \_RootZone.runBinaryGuarded (dart:async/zone.dart:1606:10)

E/flutter ( 4656): #31     \_BufferingStreamSubscription.\_sendError.sendError (dart:async/stream_impl.dart:358:15)

E/flutter ( 4656): #32     \_BufferingStreamSubscription.\_sendError (dart:async/stream_impl.dart:373:9)

E/flutter ( 4656): #33     \_BufferingStreamSubscription.\_addError (dart:async/stream_impl.dart:280:7)

E/flutter ( 4656): #34     \_SyncStreamControllerDispatch.\_sendError (dart:async/stream_controller.dart:788:19)

E/flutter ( 4656): #35     \_StreamController.\_addError (dart:async/stream_controller.dart:666:7)

E/flutter ( 4656): #36     \_StreamController.addError (dart:async/stream_controller.dart:620:5)

E/flutter ( 4656): #37     \_RawSecureSocket.\_reportError (dart:io/secure_socket.dart:888:19)

E/flutter ( 4656): #38     \_RawSecureSocket.\_pushAllFilterStages (dart:io/secure_socket.dart:1155:9)

E/flutter ( 4656): \<asynchronous suspension\>

E/flutter ( 4656): #39     \_RawSecureSocket.\_tryFilter (dart:io/secure_socket.dart:1006:25)

E/flutter ( 4656): \<asynchronous suspension\>
 static Future<void> getImage(String question) async {
    final res = await http.post(Uri.parse('https://api.edenai.run/v2/image/generation'),
        headers: {
          HttpHeaders.contentTypeHeader: ' application/json',
          HttpHeaders.authorizationHeader: 'Bearer $apiKey'
        },
        body: jsonEncode({
          "providers": "openai,deepai,stabilityai",
          "text": "A huge red ballon flying outside the city.",
          "resolution": "512x512",
          "num_images": 2
        }));

    final data = await jsonDecode(res.body);

    log('res: ${res.body} + ${res.statusCode}');
  }
flutter api dart http post
1个回答
0
投票

您应该像这样使用

keep alive
来改进标题

headers: {
    "Keep-Alive": "timeout=5, max=1"
  }

此外,您还可以使用重试之类的方式尝试

var _client = RetryClient(http.Client(), retries: 3);

最后设置

timeout

.timeout(
  const Duration(seconds: 15),
);
© www.soinside.com 2019 - 2024. All rights reserved.