Ich versuche eine HTTP-Anfrage mit NSURLSession
zu senden. Es funktioniert gut, aber wenn der Server nicht antwortet, kann ich nicht finden, wo der HTTP-Fehlercode gespeichert wird. Der dritte Parameter von completionHandler
ist nur ein sehr allgemeiner NSError
. Ich habe die Referenz von NSURLResponse
gelesen, aber nichts gefunden.Handle HTTP-Fehler mit NSURLSession?
NSURLSessionDataTask *dataTask =
[session dataTaskWithRequest:[self postRequestWithURLString:apiEntry parameters:parameters]
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if(!error) NSLog([[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}
];
[dataTask resume];
Hinzufügen von && Antwort == null zu helfen, wenn ([Antwort isKindOfClass: [NSHTTPURLResponse Klasse]]) ein zusätzlicher Vorteil sein kann – prodeveloper
Methinks nicht. 'if ([response isKindOfClass: [NSHTTPURLResponse-Klasse]] && response == nil)' würde niemals wahr sein (entweder 'response' ist 'nil' oder HTTP-Antwort, aber niemals beide gleichzeitig). Vielleicht meintest du 'response! = Nil', aber das ist implizit im Aufruf von' isKindOfClass' (d. H. Wenn 'response'' nil' ist, ist das Aufrufen von 'isKindOfClass' auf' nil' Objekt nicht wahr). Wenn Sie wirklich 'if (response! = Nil && [Antwort isKindOfClass: [NSHTTPURLResponse class]]) 'wollen, ist das nicht falsch und macht die Absicht explizit, ist aber überflüssig. – Rob
Ja, Sie haben Recht. Es gibt einen Tippfehler in dem Kommentar. Ich meine, "|| Antwort" statt "&& Antwort" zu erwähnen – prodeveloper