NSURLRequest POST для Google App Engine? - PullRequest
2 голосов
/ 17 января 2011

В настоящее время я изучаю GAE (Python) и пытаюсь отправить запросы POST из приложения iPhone.

Отправка методом GET работает нормально, но при использовании метода POST происходит сбой.

Вот серверная сторона:

class echoHandler(webapp.RequestHandler):
    def get(self):
        password = self.request.get("password")
        if password == "ping":
            self.response.out.write("pong")
        else:
            self.response.out.write("erreur de password")

    def post(self):
        password = self.request.get("password")
        if password == "ping":
            self.response.out.write("pong")
        else:
            self.response.out.write("erreur de password")

и на стороне клиента:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://myapp.appspot.com/echo"]];
    NSMutableURLRequest *maRequete = [NSMutableURLRequest requestWithURL:url];

    [maRequete setHTTPMethod:@"POST"];
    NSString *essaiMdp = @"password=ping";
    [maRequete setHTTPBody:[essaiMdp dataUsingEncoding:NSUTF8StringEncoding]];
    //[maRequete setValue:[NSString stringWithFormat:@"%d",[essaiMdp length]] forHTTPHeaderField:@"Content-Length"];
    //[maRequete setValue:@"text/html" forHTTPHeaderField:@"Content-Type"];
    //[maRequete setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];

    NSURLResponse *reponse;
    NSError *erreur;

    NSData *donneesPOST = [NSURLConnection sendSynchronousRequest:maRequete returningResponse:&reponse error:&erreur];

    if (donneesPOST) {
        NSString *strResultat = [[NSString alloc] initWithData:donneesPOST encoding:NSUTF8StringEncoding];
        NSLog(@"reponse recue !");
        NSLog(strResultat);
        resultat.text = strResultat;

    }
    else {
        if (erreur) {
            NSLog(@"erreur lors de la requete HTTP:%@", url);
            NSLog(@"erreur: %@", [erreur localizedDescription]);

        }
    }

Что странно, так это то, что все работает в localhost, но когда я развернул приложение в Интернете, метод POST перестал работать.

Есть идеи? Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 января 2014

Если вы отправляете запрос POST в Google App Engine, измените URL-адрес на «https» http://myapp.appspot.com/echo" на «https://myapp.appspot.com/echo".

Из того, что я испытал, отправкаURL-адрес не-https для Google App Engine вызывает перенаправление.

0 голосов
/ 17 января 2011

Есть ли вероятность того, что ваш сервер настроен на перенаправление запросов, которые не заканчиваются косой чертой на тот, который делает? Другими словами, возможно http://myapp.appspot.com/echo перенаправляет на http://myapp.appspot.com/echo/, и перенаправление всегда является GET.

...