AFNetworking POST zu REST webservice

Kurze Hintergrundgeschichte, unsere früheren Entwickler verwendet ASIHTTPRequest, um POST-Anfragen und abrufen von Daten aus unserem webservice. Aus unbekannten Gründen diesem Teil unseres app aufgehört zu arbeiten. Schien wie eine gute genug Zeit, um für die Zukunft gerüstet und gehen mit AFNetworking. REST webservice läuft auf dem CakePHP framework.

Kurz gesagt, ich bin nicht der Empfang der request-response-string mit AFNetworking.

Ich weiß das webservice funktioniert, weil ich bin in der Lage, erfolgreich die post-Daten und erhalten Sie die richtige Antwort mit curl:
curl -d "data[Model][field0]=field0value&data[Model][Feld1]=field1value" https://example.com/api/class/function.plist

Pro die früheren Entwickler die Anweisungen, die ich kam mit die folgenden.

#import "AFHTTPRequestOperation.h"    



- (IBAction)loginButtonPressed {

    NSURL *url = [NSURL URLWithString:@"https://example.com/api/class/function.plist"];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    [request setHTTPMethod:@"POST"];

    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

    [request setValue:[usernameTextField text] forHTTPHeaderField:@"data[User][email]"];

    [request setValue:[passwordTextField text] forHTTPHeaderField:@"data[User][password]"];

    AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {  

        NSLog(@"operation hasAcceptableStatusCode: %d", [operation.response statusCode]);

        NSLog(@"response string: %@ ", operation.responseString);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        NSLog(@"error: %@", operation.responseString);

    }];

    [operation start];

}

Ausgabe:
Betrieb hasAcceptableStatusCode: 200
der Antwort-string: eine leere plist-Datei

Lösungsversuch 1:
AFNetworking-Post-Request
die vorgeschlagene Lösung verwendet eine Funktion von AFHTTPRequestOperation genannt operationWithRequest. Jedoch, wenn ich versuche, die genannten Lösung bekomme ich eine Warnung " - Klasse die Methode '+operationWithRequest:Abschluss:' nicht gefunden (return type defaults to 'id'"

Lösungsversuch 2: NSURLConnection. Ausgabe: ich bin in der Lage, drucken Sie die Erfolg-log-Nachrichten, aber nicht die Antwort-string.
*update - gibt leere plist.

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
NSString *httpBodyData = @"data[User][email][email protected]&data[User][password]=awesomepassword";
[httpBodyData dataUsingEncoding:NSUTF8StringEncoding];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:[NSData dataWithContentsOfFile:httpBodyData]];
NSHTTPURLResponse __autoreleasing *response;
NSError __autoreleasing *error;
[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];

//*update - returns blank plist
NSData *responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSString *str = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"responseData %@",str);

if (error == nil && response.statusCode == 200) {
    //Process response
    NSLog(@"success");//returns success code of 200 but blank
    NSLog(@"resp %@", response );
} else {
    //Process error
    NSLog(@"error");
}
  • Hallo, Pouria, haben Sie versucht, mit NSURLConnection zu senden, die eine synchrone Anfrage?
  • Lösungsversuch 2: ist, wie ich versucht NSURLConnection.
  • Hast du alles auf der server-Seite einrichten, richtig? Wie Erweiterung der Parsen, die layouts für die Antwort und die Aussicht für Sie? Es scheint eher ein server-problem als ein client.
  • Ich landete bei der Lösung dieses. Ich bin gerade auf der Arbeit und jetzt wird nach updates später.
InformationsquelleAutor palmi | 2012-03-29
Schreibe einen Kommentar