sous iOS, comment puis-je recevoir le code d'état http (404 500 200, etc.) pour une réponse d'un serveur Web. Je suppose que c'est dans le NSUrlConnectionDelegate.
Objective-C ou Monotouch .NET réponse ok.
Oui, vous pouvez obtenir le code d'état dans la méthode déléguée -didRecieveResponse:
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
int code = [httpResponse statusCode];
}
NSHTTPURLResponse* urlResponse = nil;
NSError *error = nil;
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
La demande aSynchronous devrait également avoir un moyen d'obtenir NSHTTPURLResponse.
Vous obtenez le code d'état comme ceci:
int statusCode = [urlResponse statusCode];
int errorCode = error.code;
Dans le cas de certains codes d'erreur très utilisés (comme 404), il sera mis dans l'erreur mais avec un code différent (401 sera -1012).
Voici comment le faire dans MonoTouch pour .NET pour ces utilisateurs C #. C'est dans le NSUrlConnectionDelegate.
public override void ReceivedResponse (NSUrlConnection connection, NSUrlResponse response)
{
if (response is NSHttpUrlResponse)
{
var r = response as NSHttpUrlResponse;
Console.WriteLine (r.StatusCode);
}
}
En regardant cette autre question de stackoverflow il semble que vous pouvez gérer les codes d'état http dans la méthode déléguée - (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse *)response
:
- (void)connection:(NSURLConnection *)aConnection didReceiveResponse:(NSURLResponse*)response
{
if ([response isKindOfClass: [NSHTTPURLResponse class]])
statusCode = [(NSHTTPURLResponse*) response statusCode];
}