我正在尝试使用 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}');
}
您应该像这样使用
keep alive
来改进标题
headers: {
"Keep-Alive": "timeout=5, max=1"
}
此外,您还可以使用重试之类的方式尝试
var _client = RetryClient(http.Client(), retries: 3);
最后设置
timeout
.timeout(
const Duration(seconds: 15),
);