Ich habe vor kurzem mit AFNetworking
begonnen und Probleme beim Empfangen von Antwortheadern von JSON-basierter Server-API. Unten ist der Teil des Codes, den ich geschrieben habe, um mit dem Server zu sprechen. Anfrage/Antwort ist ein JSON-Objekt.Keine vollständigen Antwortheader mit AFNetworking erhalten
Ausgabe: Beim Lesen der Antwortheader erhalte ich keine 2 zusätzlichen Sicherheitsschlüssel von meinem Server. Wenn ich traditionelles NSURLConnection
oder neues NSURLSession
benutze, bin ich in der Lage, sie zu erhalten, aber AFNetworking
API erhält sie nicht zurück.
Irgendwelche Hinweise?
- (void)makeServerCall {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// Set Request headers
NSDictionary *securityHeaders = [MyUtilities securityRequestHeaders];
for (NSString *headerKey in securityHeaders) {
[manager.requestSerializer setValue:securityHeaders[headerKey] forHTTPHeaderField:headerKey];
}
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager.responseSerializer.acceptableContentTypes setByAddingObject:@"application/json;charset=UTF-8"];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
// Make Server Call
[manager POST:self.urlString parameters:self.postBody success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
if (!self.skipSecurityHeaders) {
[MyUtilities securityResponseHeaders:[operation.response allHeaderFields]];
}
NSLog(@"Received response for %@ \n Response Header %@ \n Response %@", self.urlString, [operation.response allHeaderFields], responseObject);
[self didFinishWithResult1:responseObject andResponse:operation.response];
} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
NSLog(@"Error: %@", error);
}];
}
Also, wenn ich [operation.response allHeaderFields]
drucken, bekomme ich folgende Ausgabe:
Response Header {
"Cache-Control" = "private, must-revalidate";
"Content-Language" = "en-US";
"Content-Length" = 929;
"Content-Type" = "application/json;charset=UTF-8";
Date = "Mon, 02 May 2016 09:12:52 GMT";
Pragma = private;
Server = "Apache-Coyote/1.1";
"Set-Cookie" = "NSC_JOuoxqqabim3ljwdrzxad5c42hiv0bf=ffffffff12a12ecc45525d5f4f58455e445a4a42378b;path=/;secure;httponly";
}
, die 2 zusätzliche Tasten fehlen - key1
und key2
von meinem Server gesendet.