1
votes

Comment définir le délai d'expiration pour la demande multi-parties dans Dart?

Voici mon code MultiPartRequest

var responseByteArray = await response.stream.toBytes().timeout(const Duration(seconds: 15));

Je sais comment définir un délai d'expiration pour une requête http normale. J'ai suivi ce lien

Définir le délai d'expiration pour la requête HTTPClient get ()

J'ai essayé d'ajouter la fonction de délai d'expiration des manières suivantes, mais cela ne fonctionnera pas et ma demande est terminée

1.

http.StreamedResponse response = await request.send().timeout(const Duration(seconds: 1));


6 commentaires

L'option 1 définit un délai d'expiration pour la création de la requête en plusieurs parties à partir du fichier. Donc, si par exemple. c'est un gros fichier qui prend beaucoup de temps à lire ou que l'E / S du périphérique est lente, il expirera avant que la requête ne soit générée. L'option 2 définit un délai d'attente à la réception des en-têtes de réponse. Cela signifie généralement que le serveur a reçu et traité l'intégralité de la demande et a répondu avec un code d'état. L'option 3 définit un délai d'attente à la réception du reste de la réponse - le corps de la réponse. Sur quoi voulez-vous réellement définir un délai d'expiration?


@Ovidiu Je veux définir un délai d'expiration pour ma requête http qui va au serveur


C'est l'option 2 alors. Si le serveur ne reçoit, ne lit et ne traite pas l'intégralité de la demande, puis répond avec un code d'état HTTP qui revient à l'application, le tout dans le délai imparti, cela sera considéré comme un délai d'expiration.


S'agit-il de C #?


@Momoro C'est à propos du langage Dart et du framework Flutter


Eh bien, j'ai trouvé ceci: github.com/lejard-h/chopper/issues/49 < / a> (c'est fléchette , mais en hacheur )


3 Réponses :



0
votes

hé, vous pouvez également utiliser dio 3.0.4

Un client Http puissant pour Dart, qui prend en charge les intercepteurs, la configuration globale, FormData, l'annulation des demandes, le téléchargement de fichiers, le délai d'expiration, etc.

Voici le lien: Client Http pour Dart


0 commentaires

1
votes

Utilisez le package Dio avec le code suivant:

  try {
  final response = await Dio().post(requestFinal.item1, data:formData, options: option,
      onSendProgress: (sent, total) {
        print("uploadFile ${sent / total}");
      });

  print("Response Status code:: ${response.statusCode}");

  if (response.statusCode >= 200 && response.statusCode < 299) {

    dynamic jsonResponse = response.data;
    print("response body :: $jsonResponse");
    final message = jsonResponse["msg"] ?? '';
    final status = jsonResponse["status"] ?? 400;
    final data = jsonResponse["data"];
    return HttpResponse(status: status, errMessage: message, json: data);
  }
  else {
    dynamic jsonResponse = response.data;
    print('*********************************************************');
    print("response body :: $jsonResponse");
    print('*********************************************************');
    var errMessage = jsonResponse["msg"];
    return HttpResponse(status: response.statusCode, errMessage: errMessage, json: jsonResponse);
  }
}
on DioError catch(error) {
  print('*********************************************************');
  print('Error Details :: ${error.message}');
  print('*********************************************************');
  dynamic jsonResponse = error.response.data;
  print('*********************************************************');
  print("response body :: $jsonResponse");
  print('*********************************************************');
  var errMessage = jsonResponse["message"] ?? "Something went wrong";
  return HttpResponse(status: jsonResponse["status"] , errMessage:  errMessage, json: null);
}                                                                                      

Hope cela aide!


1 commentaires

Je connais la bibliothèque Diorites mais je ne peux pas l'utiliser car c'est mon projet de bureau et mon chef d'équipe ne l'autorise pas à l'utiliser