我必须遗漏一些基本的东西,因为我无法使用POST来获取任何NSURLSession示例。我将我的服务器设置为打印出来(到我尾巴的文件)所有收到的POST参数,并且我在POST主体中显示的内容都没有显示出来。我尝试了Send POST request using NSURLSession的解决方案以及the Ray Wenderlich Cookbook for using NSURLSession等在线教程。
例如,这里的代码几乎直接来自Stackoverflow thread, mentioned above,只更改了URL和post参数:
-(void)postTest {
NSString *textContent = @"XXXXX";
NSString *noteDataString = [NSString stringWithFormat:@"x=%@", textContent];
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfiguration.HTTPAdditionalHeaders = @{
@"a" : @"YYYYY"
};
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration];
NSURL *url = [NSURL URLWithString:@"[MY URL with PHP script]"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPBody = [noteDataString dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPMethod = @"POST";
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
outputLabel.text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}];
[postDataTask resume];
}
PHP脚本显示“XXXXX”参数已正确接收 - 但它不是POST正文的一部分;相反,它是URL本身的一部分。 POST正文中唯一的参数是“YYYYY”参数,但它根本不显示。
Ray Wenderlich示例也不起作用:没有出现PHP脚本。
-(void)testPost {
NSURL *url = [NSURL URLWithString:@"[MY URL with PHP script]"];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:config];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";
NSDictionary *dictionary = @{@"a": @"YYYYY"};
NSError *error = nil;
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:kNilOptions error:&error];
if (!error) {
NSURLSessionUploadTask *uploadTask =
[session uploadTaskWithRequest:request
fromData:data completionHandler:^(NSData *data,NSURLResponse *response,NSError *error) {
}];
[uploadTask resume];
}
}
我有没有在某处设置的东西?我没有想到转移到NSURLSession会有如此微妙的boobytraps,我想知道这是不是很蠢我做错了或丢失了。谢谢你的帮助!
答案 0 :(得分:0)
Apple Documentation:fromData:completionHandler:
提供URL,缓存策略,请求的NSURLRequest对象 类型,等等。此请求对象中的正文流和正文数据 被忽略了。