NSURLConnection 发送 GET 请求而不是 POST 请求
Posted
技术标签:
【中文标题】NSURLConnection 发送 GET 请求而不是 POST 请求【英文标题】:NSURLConnection sends GET request instead of POST request 【发布时间】:2013-06-27 19:18:25 【问题描述】:我正在尝试使用 NSURLConnection 发出 POST 请求。我用Charles调试,Charles每次都说方法是GET。我已经尝试了所有不同的方法,但无法让它发挥作用。我没有使用 JSON。
-(void)getList
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSURL *url = [NSURL URLWithString:@"http://example.com/api/getList"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSString *radius = @"15";
NSString *latitude = @"-117.820833";
NSString *longitude = @"34.001667";
NSString *parameters = [NSString stringWithFormat:@"longitude=%@&latitude=%@&radius=%@", longitude,latitude, radius];
NSLog(@"PARAMS = %@", parameters);
NSData *data = [parameters dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPMethod:@"POST"];
[request setValue:@"text/plain" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:data];
NSURLResponse *response = nil;
NSError *error = nil;
NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *responseString = [[NSString alloc]initWithData:result encoding:NSUTF8StringEncoding];
NSLog(@"RESULT = %@", responseString);
有人知道我做错了什么吗?当我访问我的网络服务时,似乎我没有发布任何内容。我得到的是空的回复。
请提供任何想法。我几乎必须发出一个简单的 POST 请求。也许有人可以帮助我更好地调试它。
【问题讨论】:
服务器有授权要求吗?您的请求是否被重定向? 您是否可能在应用程序的其他地方将此网址称为 GET?它可能正在缓存对该 url 的请求的响应,因此完全忽略您的 POST...也许给request.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;
一个机会?
如果我见过一个 POST 请求。问题出在其他地方。
@Wain 请发布相同的答案,以便我接受它作为正确答案。我的请求正在被重定向,这就是问题所在。非常感谢韦恩。
【参考方案1】:
如果服务器出于某种原因(可能是身份验证)重定向您的请求,那么POST
信息可能会丢失。
【讨论】:
以上是关于NSURLConnection 发送 GET 请求而不是 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章
ios开发网络学习:一:NSURLConnection发送GET,POST请求
iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
iOS开发 GET、POST请求方法(NSURLConnection篇)