EDIT 07/14AFNetworking - Wie POST-Anfrage
Als Bill Burgess erwähnt in einem Kommentar seiner Antwort zu machen, wird diese Frage an die version 1.3
von AFNetworking
bezogen. Es kann für die Neuankömmlinge hier veraltet sein.
Ich bin ganz neu in iPhone Entwicklung, und ich bin mit AFNetworking als meine Dienste Bibliothek.
Die API, die ich abfrage, ist eine RESTful, und ich muss POST-Anfragen stellen. Um dies zu tun, habe ich versucht, mit dem folgenden Code:
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"my_username", @"username", @"my_password", @"password", nil];
NSURL *url = [NSURL URLWithString:@"http://localhost:8080/login"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"Pass Response = %@", JSON);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Failed Response : %@", JSON);
}];
[operation start];
Es gibt zwei Hauptprobleme mit diesem Code:
AFJSONRequestOperation
scheinen einenGET
Antrag zu stellen, keinePOST
ein.- Ich kann diese Methode nicht mit Parametern versehen.
Ich habe auch versucht mit diesem Code:
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"my_username", @"username", @"my_password", @"password", nil];
NSURL *url = [NSURL URLWithString:@"http://localhost:8080"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
[httpClient postPath:@"/login" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Succes : %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure : %@", error);
}];
Gibt es eine bessere Art und Weise zu machen, was ich hier will getan, um es zu erhalten?
Danke für die Hilfe!
Vielen Dank für Ihre Antwort! Nur eine Frage: Dein 'SIOAPIClient' wäre ein' MyAPIClient' hier nicht? –
Sie haben Recht ... Ich habe das aus meiner eigenen Implementierung kopiert und eingefügt und die Klassennamen geändert. Verpasste eine Stelle, denke ich. Ich habe meine Antwort so bearbeitet, wie es sein sollte. –
Ich habe versucht, einen benutzerdefinierten Client so zu implementieren, wie Sie schreiben, aber ich bekomme einen Fehler: 'Keine bekannte Klassenmethode für den Selektor 'sharedClient''. Der Header ist korrekt enthalten, also frage ich mich, warum ich diesen Fehler bekomme. –