Récupérer le code erreur d'une requête http

ProdProd Membre
Bonjour,

Mon appli envoie une requête HTTP à  une API sur un serveur distant, qui me renvoie en JSON les éléments recherchés.

Ma question est : Comment récupérer les codes erreurs renvoyés par la requête lorsque qu'il ne trouve pas la page ou autre ... du genre : erreur 404 page not found. ou erreur 403 etc ...

Si j'essai de convertir ma réponse en JSON value, mon appli crash bien entendu.

Merci à  vous, toute piste est bonne à  prendre !
Prod

Réponses

  • CéroceCéroce Membre, Modérateur
    22:57 modifié #2
    As-tu implémenté la méthode déléguée de NSURLConnection [tt]-connection:didFailWithError:[/tt] ?
  • AliGatorAliGator Membre, Modérateur
    22:57 modifié #3
    C'est dans la méthode déléguée [tt]- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response[/tt] que tu reçois les infos de réponse comme celles du header HTTP.

    Comme indiqué dans la doc de NSURLResponse, dans le cas d'une requête HTTP, le NSURLResponse est plus particulièrement une instance de [tt]NSHTTPURLResponse[/tt], qui contient une propriété statusCode.
    C'est ce statusCode (200 = OK, 404 = Not Found, etc) qui t'intéresse.

    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {<br />&nbsp; NSHTTPURLResponse* httpRep = (NSHTTPURLResponse*)response;<br />&nbsp; NSLog(@&quot;status code : %d&quot; , [httpRep statusCode]);<br />}
    
  • CéroceCéroce Membre, Modérateur
    22:57 modifié #4
    Ah oui, pardon, dans le cas d'une page 404, par exemple, on a bien une réponse, et la méthode déléguée d'erreur n'est pas appelée.
  • ProdProd Membre
    22:57 modifié #5
    Re bonjour,

    J'arrive en effet à  récupérer le code erreur, merci !
    Cependant, je n'arrive pas à  trouver comment récupérer les données de réponse (Response data). J'ai pourtant essayé de NSLog toutes les données que pouvais retourner NSHTTPURLResponse, mais je ne trouve pas :( Si vous aviez une idée, ca m'aiderait bien :)

    Prod
  • malgachemalgache Membre
    22:57 modifié #6
    Tu peux trouver ton bonheur dans la doc

    http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html

    Je t'aurai bien donné plus d'info mais je suis pas sur le mac, j'ai pas mes classes sous les yeux ^^
  • ProdProd Membre
    22:57 modifié #7
    J'ai bien fouillé dans la doc et sur le net ... mais je n'y arrive pas :(
  • ProdProd Membre
    22:57 modifié #8
    Quelqu'un saurait comment faire pour récupérer le message qui va avec le statusCode ?
  • AliGatorAliGator Membre, Modérateur
    22:57 modifié #9
    La doc c'est pas pour les chiens !
    Dans la même classe que celle où tu récupères le statusCode (NSHTTPURLConnection) tu n'as pas que ça comme méthode, tu en as d'autres... si tu allais les lire ?
  • ProdProd Membre
    22:57 modifié #10
    Je sais bien que ce n'est pas pour les chiens. J'ai bien spécifié dans mes messages précédents que j'avais lu la doc et essayé de NSLog un peu tout ce qui était possible. Je suis surement passé à  coté, mais je ne trouve pas.
  • Eddy58Eddy58 Membre
    22:57 modifié #11
    Si tu nous montrais le code, on pourrait t'aider plus.
  • DrakenDraken Membre
    juin 2011 modifié #12
    dans 1307714540:

    La doc c'est pas pour les chiens !

    Vraiment ?
  • AliGatorAliGator Membre, Modérateur
    22:57 modifié #13
    dans 1307968321:

    Je sais bien que ce n'est pas pour les chiens. J'ai bien spécifié dans mes messages précédents que j'avais lu la doc et essayé de NSLog un peu tout ce qui était possible. Je suis surement passé à  coté, mais je ne trouve pas.
    Tu as lu la doc de la classe que je t'avais indiqué, qui contient à  tout casser que 5 méthodes, et tu n'as pas trouvé celle que tu devais utiliser ? Alors là , je vois plus quoi faire pour toi.
Connectez-vous ou Inscrivez-vous pour répondre.