我现在正在使用谷歌应用引擎获得最奇怪的问题。我正在发送来自iOS和Google应用引擎的POST请求,而不是调用GET处理程序。
我已经将这一种情况沙箱化进行测试,无法弄明白。我有一个只发送请求的iOS应用程序。除了服务之外,我已经在GAE上评论了所有内容。该服务仅记录参数并返回。
iOS应用程序我尝试过使用两种不同的方式发送请求。两者都不起作用。
iOS代码:
/*
NSURL * url = [NSURL URLWithString:@"http://beermonster-gngrwzrd.appspot.com/TestParameter"];
ASIFormDataRequest * _fdrequest = [[ASIFormDataRequest alloc] initWithURL:url];
[_fdrequest setPostValue:@"hello" forKey:@"testkey"];
[_fdrequest startAsynchronous];
*/
NSURL * __url = [NSURL URLWithString:@"http://beermonster-gngrwzrd.appspot.com/TestParameter"];
NSMutableURLRequest * __request = [NSMutableURLRequest requestWithURL:__url];
[__request setHTTPMethod:@"POST"];
NSString * post = [NSString stringWithFormat:@"testkey=hello"];
[__request setHTTPBody:[post dataUsingEncoding:NSUTF8StringEncoding]];
[NSURLConnection sendSynchronousRequest:__request returningResponse:nil error:nil];
我的应用引擎处理程序:
class TestParameter(webapp.RequestHandler):
def post(self):
logging.debug(self.request.get("testkey"))
self.response.out.write(self.request.get("testkey"))
print self.request.get("testkey")
def get(self):
logging.debug("get")
logging.debug(self.request.get("testkey"))
self.response.out.write(self.request.get("testkey"))
GAE日志中的输出显示“get”代码路径,该路径不正确。
为什么POST请求会作为GET进入GAE?我错过了GAE中的一些配置吗?
谢谢!
答案 0 :(得分:2)
检查app.yaml中的条目以查找处理“/ TestParameter”的脚本。它是否指定“安全:始终”?如果确实如此,并且您建立了非安全连接,则会获得302重定向到安全版本。
要解决此问题,请通过HTTPS发布帖子或从app.yaml中的条目中删除“secure:always”。
答案 1 :(得分:0)
我可以告诉您是否要向GAE发送POST请求。确保在https上执行此操作。如果您在非https尝试时发出请求,它会将302重定向发送回请求的https版本。但是,如果您用于发送请求的任何内容无法正确处理302,则可能会错误地重新发送请求。