Xcode URLRequest

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Xcode URLRequest

    Hallo zusammen,

    Ich stehe gerade vor einem kleinerem Problem. Und zwar wollte ich in meine APP eine Userverwaltung einbauen. Dazu habe ich folgende Methode:

    Quellcode

    1. ​- (bool) checkUserData:(NSString *)username usingPassword:(NSString*)password {
    2. NSDictionary *postDict = [NSDictionary dictionaryWithObjectsAndKeys:@"username", username, @"password", password, nil];
    3. NSData *postData = [self encodeDictionary:postDict];
    4. NSString *postLength = [NSString stringWithFormat:@"%d", postData.length];
    5. NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.***.de/***/api.php?type=checkUser"]];
    6. [request setHTTPMethod:@"POST"];
    7. [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    8. [request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    9. [request setHTTPBody:postData];
    10. NSURLResponse *response;
    11. NSError *error = nil;
    12. NSData *receivedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    13. NSLog(@"%@", response);
    14. NSString *responseString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    15. NSLog(responseString);
    16. return true;
    17. }
    Alles anzeigen


    Die PHP-Datei sieht ganz einfach aus dazu:

    Quellcode

    1. <?
    2. print_r($_REQUEST);
    3. ?>


    Also ich gebe alles zurück, was über $_GET oder $_POST gesendet wird.

    In xcode bekomme ich im LOG folgende ausgabe:

    Quellcode

    1. Array ( [type] = checkUser )


    Und nun stehe ich ein wenig auf dem Schlauch, was ich da nicht beachte und wieso die POST-Parameter nicht an PHP übergeben werden.

    Vielleicht kann mir hier jemand Helfen :) Vielen Dank!

    Ps.: Getestet habe ich die APP auf einem iPhone 5s iOs 7.1 mit W-LAN. Falls das von belangen ist!

    Danke!!
  • Du startest im Terminal das Kommando

    Quellcode

    1. ​nc -l 10000
    Damit lauscht das Programm auf dem Port 10000 auf Verbindungen. Die URL Deines Programms änderst Du zum Testen auf http://<ip des servers>:10000/***/api.php?type=checkUser ab. Dabei verwendest Du die IP des Rechners im LAN (nicht 127.0.0.1). Wenn Du jetzt die Anfrage aus dem Programm startest, spuckt Dir deren Inhalt aus.
    „Meine Komplikation hatte eine Komplikation.“
  • Quellcode

    1. POST /api.php?type=checkUser HTTP/1.1
    2. HOST: IP:10000
    3. Content-Type: application/x-www-form-urlencoded charset=utf-8
    4. Connection: keep-alive
    5. Accept */*
    6. User-Agent APP/1.0 CFNetwork/672.1.13 Darwin/14.0.0
    7. Content-Length: 31
    8. Accept-Language: de-de
    9. Accept-Encoding: gzip, deflate
    10. Testuser=username&12345=password
    Alles anzeigen


    Danke & Gruß Stephan
  • Danke nochmals für die Antwort.

    Habe nun oben die Parameter getauscht und hinter Content-Length einen doppelpunkt gesetzt und dasselbe auch bei Content-Type.

    jetzt bekomme ich die Fehlermeldung:

    Quellcode

    1. ​Request Entity too Large
    2. The requested Resource does not allow request data with POST request, or the amount of data provided in the request exceeds the capacity limit.
  • Stephan18 schrieb:

    Habe nun oben die Parameter getauscht und hinter Content-Length einen doppelpunkt gesetzt und dasselbe auch bei Content-Type.

    Wenn Du die Parameter wie in Deinem Listing setzt, setzt der Request die Doppelpunkte automatisch. Mich hat nur gewundert, dass sie in der Ausgabe fehlen.

    Hier hast Du ein Beispiel für eine funktionierende Anfrage. Vielleicht fällt Dir da ein Unterschied auf.
    „Meine Komplikation hatte eine Komplikation.“