NSURLSession 发送 GET 请求,即使我在 HTTPMethod 中设置了 POST

Posted

技术标签:

【中文标题】NSURLSession 发送 GET 请求,即使我在 HTTPMethod 中设置了 POST【英文标题】:NSURLSession send GET request even if I set POST in HTTPMethod 【发布时间】:2014-08-28 23:13:10 【问题描述】:

我正在尝试使用以下代码向我的服务器发送 POST 请求:

NSURLSessionConfiguration *defaultConfigObj = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration:defaultConfigObj];

//NSURL *url = [NSURL URLWithString:@"http://www.myserver.com/page.aspx"];
NSURL *url = [NSURL URLWithString:@"http://10.47.72.40/test/page.aspx"];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.10f];
NSString *params = [NSString stringWithFormat:@"data=%@&UserMail=%@",
                    InfoDictionary[@"ID"],
                    arrDatosMail[0]
                    ];

[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];

NSURLSessionDataTask *dataTask = [defaultSession dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) 
    NSLog(@"Response: %@ error:%@", response, error);

    if(error == nil)
        NSString *textRepsonse = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"Data: %@", textRepsonse);


    
];

因此,当尝试使用本地 IP 时,它可以正常工作(服务器接收 POST 请求),但是当我更改远程 IP(使用 de www.myserver.com/page.aspx)时,页面会收到请求使用 GET 方法,我不知道为什么 :(,

我做错了什么?提前致谢。

【问题讨论】:

您如何检查正在使用的 HTTP 方法? 你搞定了吗? 【参考方案1】:

没有问题。请求将作为 POST 发送。 我建议使用代理来调试确切发送的内容。在 Mac 上,Charles 代理是一个不错的选择。

Charles proxy web site

【讨论】:

以上是关于NSURLSession 发送 GET 请求,即使我在 HTTPMethod 中设置了 POST的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

网络编程 利用NSURLSession发送GET POST请求

NSURLSession的GET和POST请求的封装

iOS关于使用NSURLSession进行大文件下载以及断点下载