NSURLConnection wird bei GET vorzeitig geschlossen

Ich arbeite an einer Methode, um meine URL-Verbindungen für das Senden und Empfangen von JSON-Daten von einem Server zu zentralisieren. Es funktioniert mit POST, aber nicht mit GET. Ich verwende einen Google App Engine-Server und er verarbeitet auf meinem Computer die POST-Anforderungen und gibt die richtigen Ergebnisse zurück (und protokolliert sie entsprechend). Wenn ich die Anforderung mit einer GET-Methode versuche, wird jedoch die folgende Fehlermeldung angezeigt:

Error Domain=kCFErrorDomainCFNetwork Code=303 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 303.)" UserInfo=0xd57e400 {NSErrorFailingURLKey=http://localhost:8080/api/login, NSErrorFailingURLStringKey=http://localhost:8080/api/login}

Außerdem zeigt der GAE-Dev-Server einen Fehler "Pipe unterbrochen" an, der darauf hinweist, dass der Client die Verbindung geschlossen hat, bevor der Server alle Daten gesendet hat.

Hier ist die Methode:

/* Connects to a given URL and sends JSON data via HTTP request and returns the result of the request as a dict */
- (id) sendRequestToModule:(NSString*) module ofType:(NSString*) type function:(NSString*) func params:(NSDictionary*) params {

    NSString *str_params = [NSDictionary dictionaryWithObjectsAndKeys:func, @"function", params, @"params", nil];
    NSString *str_url = [NSString stringWithFormat:@"%@%@", lds_url, module];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:str_url]];
    NSData *data = [[NSString stringWithFormat:@"action=%@", [str_params JSONString]] dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPMethod:type];
    [request setHTTPBody:data];
    [request setValue:[NSString stringWithFormat:@"%d", [data length]] forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

    NSError *error = nil;
    NSURLResponse *response = nil;
    NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    NSLog(@"Error: %@", error);
    NSLog(@"Result: %@", [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding]);
    return [result objectFromJSONData];
}

Ein Beispielanruf wäre:

NSDictionary *response = [fetcher sendRequestToModule:@"login" ofType:@"GET" function:@"validate_email" params:dict];

Auch dies funktioniert mit einem POST, aber nicht mit einem GET. Wie kann ich das beheben?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage