繁体   English   中英

NSURLRequest POST到Google App Engine?

[英]NSURLRequest POST to google app engine?

我目前正在研究GAE(Python),并且正在尝试从iPhone应用程序发送POST请求。

使用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中运行,但是当我在Internet上部署应用程序时,POST方法停止了工作。

任何想法 ? 谢谢 !

如果您要向Google App Engine发送POST请求,请将URL更改为“ https”“ http://myapp.appspot.com/echo ”更改为“ https://myapp.appspot.com/echo ”。

根据我的经验,向Google App Engine发送“非https”网址会导致重定向。

是否有可能将您的服务器设置为将不以斜杠结尾的请求重定向到一个以斜杠结尾的请求? 换句话说,也许http://myapp.appspot.com/echo重定向到http://myapp.appspot.com/echo/ ,并且重定向始终是GET。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM