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请求

NSURLConnection使用

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发 GET、POST请求方法(NSURLConnection篇)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)