• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Cocoa: POST Anfrage

keman

Gast
Hallo

Wie kann man in Cocoa bzw. Objective-C einer Webseite eine Post-Anfrage versenden? Hab's mit dem Beispiel aus dem Developer ("POST Example") probiert, jedoch hat's dort nicht ganz geklappt.
Ist jenes Beispiel falsch oder musst man eine bestimmte Syntax oder so beachten?
Das Feld "URL" mit einer URL und das Feld "POST data" mit value=hallo auszufüllen hat nicht geklappt, obwohl die angegebene URL auch tatsächlich nach value fragt ($value = $_POST['value']; echo $value ist dort enthalten)...

mfg
keman
 

Bölzebub

Querina
Registriert
27.05.05
Beiträge
180
Du brauchst erst mal einen NSMutableURLRequest. Dem sagst du dann, dass er als HTTP-Methode POST verwenden soll.

Code:
request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
Dann brauchst du noch einen String, der alle Parameter enthält. Den setzt du dann als HTTP-Body des Requests.

Code:
NSString *bodyString = @"value=hallo&foo=bar";
[request setHTTPBody:[bodyString dataUsingEncoding:NSUTF8StringEncoding]];
Evtl. brauchst du noch eine stringByAddingPercentEscapesUsingEncoding: für den Body-String und wenn der Server es haben will musst du "Content-Type" und "Content-Length" im Header noch setzen. Danach den Request ganz normal per NSURLConnection ausführen.

Nachtrag: Steht übrigens auch bei CocoaDev.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Peter Maurer

keman

Gast
Das klappt irgendwie nicht. :(

Die Antwort des Servers sieht immer so aus, als hätte er keine POST Daten eingelesen.

Code:
NSString* content = @"value=hallo";
NSURL *webServiceURL = [NSURL URLWithString:[url_field stringValue]];

NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:webServiceURL];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];
[urlRequest setHTTPBody:[content dataUsingEncoding:NSASCIIStringEncoding]];

NSURLConnection* connectionResponse = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
 

Bölzebub

Querina
Registriert
27.05.05
Beiträge
180
Content-Type sollte wahrscheinlich eher "application/x-www-form-urlencoded" sein. Kann sein, dass das sonst nicht in $_POST landet. (Reine Spekulation, meine PHP-Kenntnisse halten sich in Grenzen.) Wenn das nicht hilft, versuch mal zusätzlich noch ein
Code:
[urlRequest addValue:[NSString stringWithFormat:@"%d", [bodyString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]] forHTTPHeaderField:@"Content-Length"];
 

keman

Gast
Wow mit "application/x-www-form-urlencoded" hat's geklappt! :)

Danke! :)