2016-07-04 1 views
-5

J'ai la méthode suivante:Comment puis-je obtenir le code d'état HTTP en utilisant OkHttp lorsqu'il n'y a pas de connectivité?

Response httpResponse = client.newCall(request).execute(); 
httpResponse.code(); 

Mais dans certains cas (par exemple, lorsque je déconnecte le réseau téléphonique, accédez à Google de la Chine ou le serveur est cassé), il me donne un IOException au lieu d'une erreur code.

Comment puis-je obtenir tout le code d'état HTTP comme le fait Volley?

+0

Il n'y aura pas de code d'état http dans le cas d'un réseau déconnecté ou d'une panne complète du serveur parce que le code d'état est envoyé ** par le serveur **. –

+0

merci, j'ai fait une erreur. –

Répondre

0

Vous n'obtiendrez aucun code d'état dans cette situation. Lire la documentation:

Response execute() throws IOException

Invoque immédiatement la demande, et bloque jusqu'à ce que la réponse peut être traitée ou est dans l'erreur. L'appelant peut lire le corps de la réponse avec la méthode Response.body de la réponse. Pour éviter les fuites de ressources, les appelants doivent fermer le corps de la réponse. Notez que le succès de la couche de transport (réception d'un code de réponse HTTP, en-têtes et corps) n'indique pas nécessairement le succès de la couche application: la réponse peut toujours indiquer un code de réponse HTTP non satisfait comme 404 ou 500.

Lancers:

  • IOException: si la demande n'a pas pu être exécuté en raison de l'annulation, un problème de connectivité ou délai d'attente. Comme les réseaux peuvent échouer pendant un échange, il est possible que le serveur distant ait accepté la demande avant la panne.

  • IllegalStateException: lorsque l'appel a déjà été exécuté.

Un IOException devrait si la demande n'a pas pu être exécutée en raison de un problème de connectivité.