Introduction au document :La connexion hyperlientérée est visible.
En appelant l’interface de l’autre partie via curl, il a été constaté que le phénomène de timeout était très grave, alors j’ai demandé à la personne de l’interface de l’autre partie, et l’autre partie a dit qu’il était nécessaire d’ajouter :
Après l’avoir ajouté, j’ai découvert que ça fonctionnait vraiment bien, alors j’ai fait des recherches sur la façon de l’utiliser. Lors de l’utilisation du curl pour POST, lorsque « les données POST dépassent 1024 octets », le curl ne déclenchera pas directement une requête POST, mais sera divisé en 2 étapes :
Expect: 100-continue
1. Envoyer une requête contenant un Attend :100-continue, demandant au serveur d’accepter les données
2. Après avoir reçu la réponse à 100 continues retournée par le serveur, les données sont envoyées POSTed au serveur
Mais il y a plusieurs problèmes avec cela :
Tous les serveurs ne répondront pas correctement à 100-continue, par exemple lighttpd, qui retournera 417 Expectation Failed.
causant un retard,Lorsque le client envoie le premier Expect :100-continue, il doit attendre que le serveur réponde avant d’envoyer le corps de la demande。
Si vous êtes certain que le serveur de l’autre partie ne rejettera pas les requêtes POST de plus de 1024 octets, vous pouvez éviter cette méthode et éviter les deux effets secondaires mentionnés ci-dessus, et la solution est celle mentionnée au début de l’article.
Environ 100 continuent
Le but de ceci est de :
Cela permet au client de juger si le serveur est prêt à recevoir les données de la requête avant de les envoyer, et si le serveur est prêt à les recevoir, le client enverra effectivement les données.
Comportement du client :
Un client qui envoie 100 continues ne doit pas attendre éternellement une réponse du serveur, et après un délai d’attente, le client doit envoyer directement l’entité.
Comportement côté serveur :
Si le serveur reçoit une demande de 100 continuations, il répondra avec 100 continuations ou enverra un code d’erreur. Le serveur ne peut jamais envoyer 100 continues à un client qui n’envoie pas 100 continuations. Mais certains serveurs le font. IIS 5 envoyant incorrectement une réponse 100-continue
Si le serveur reçoit le corps du client avant d’envoyer la réponse de 100 continuations, cela signifie que le client a décidé de commencer à envoyer des données, donc le serveur ne peut plus envoyer 100 continuations au client. Le code de paramètre .NET Expect Off Expect est le suivant :
RestSharp est configuré comme suit :
|