2017-09-22 5 views
3

TLDR: Existe-t-il un moyen de forcer OkHttp à gérer correctement les réponses HTTP/inattendues? J'utilise OkHttp 3.8.1 sur Android pour POST à ​​un serveur mal comporté.okhttp: comment gérer la réponse 100 (continue) non demandée/inattendue du serveur?

Même si la requête n'inclut pas d'en-tête "Expect: 100-continue", le serveur Web renvoie une réponse 100 Continue. Plutôt que de continuer à envoyer le corps de la requête, puis d'obtenir la réponse réelle (200), OkHttp s'arrête là et renvoie la réponse 100 Continue dans mon okhttp.Callback.

J'ai essayé d'inclure explicitement "Expect: 100-continue" dans la requête pour déclencher la logique d'OkHttp, mais le serveur (probablement à cause d'un bug) prétend que l'en-tête est mal formé et rejette la requête. J'ai également essayé d'envoyer "Expect:" (aucune valeur), mais le serveur envoie toujours la réponse 100 Continue et OkHttp s'arrête là.

D'autres clients HTTP (j'ai testé 3 jusqu'à présent) peuvent très bien communiquer avec ce serveur. Ils gèrent la réponse 100 Continue correctement même s'ils ne voyaient pas "Expect: 100-continue" dans l'en-tête de la requête. Y at-il une option que je peux définir, ou un intercepteur que je peux écrire, pour que OkHttp fasse la même chose?

Répondre

3

On dirait quelque chose qu'on peut réparer dans OkHttp. C'est bizarre et le serveur est cassé, mais si d'autres clients le manipulent OkHttp devrait aussi.

S'il vous plaît signaler un bug là-bas?

+2

[fait] (https://github.com/square/okhttp/issues/3628) –