Skip to main content
 首页 » 编程设计

iphone之NSURLRequest POST 到谷歌应用引擎

2025年05月04日30leader

我目前正在研究 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]); 
 
        } 
    } 

奇怪的是,在本地主机上一切正常,但是当我在互联网上部署应用程序时,POST 方法停止工作。

有什么想法吗?谢谢!

请您参考如下方法:

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