34 votes

NSUrlConnectionDelegate - Obtention des codes d’état http

sous iOS, comment puis-je recevoir le code de statut http (404 500 200, etc.) pour une réponse d'un serveur Web. Je suppose que cela se trouve dans NSUrlConnectionDelegate.

Réponse d' Objective-C ou Monotouch .NET ok.

87voto

Vladimir Points 110327

Oui, vous pouvez obtenir le code de statut dans la méthode de délégation -didRecieveResponse:

 - (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
   NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
   int code = [httpResponse statusCode];
}
 

11voto

Manuel Points 4262
 NSHTTPURLResponse* urlResponse = nil;
NSError *error = nil;
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
 

La requête aSynchronous devrait également avoir un moyen d’obtenir le NSHTTPURLResponse.

Vous obtenez le code de statut comme ceci:

 int statusCode = [urlResponse statusCode];
int errorCode = error.code;
 

Dans le cas de codes d'erreur très utilisés (tels que 404), l'erreur sera insérée mais avec un code différent (401 sera -1012).

3voto

BahaiResearch.com Points 14967

Voici comment procéder dans MonoTouch for .NET pour les utilisateurs de C #. Cela se trouve dans NSUrlConnectionDelegate .

 public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
{
  if (response is NSHttpUrlResponse)
  {
    var r = response as NSHttpUrlResponse;
    Console.WriteLine (r.StatusCode);
   }
}
 

1voto

Carter Points 772

En regardant cette autre question de stackoverflow, il semble que vous puissiez gérer les codes d’état http dans la méthode de délégation - (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response :

 - (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse*)response 
{
    if ([response isKindOfClass: [NSHTTPURLResponse class]])
        statusCode = [(NSHTTPURLResponse*) response statusCode];
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X