NSURLSession的最小POST示例

NSURLSession的最小POST示例,post,nsurlsession,Post,Nsurlsession,我一定是遗漏了一些基本的东西,因为我根本无法使用POST获得任何NSURLSession示例。我已经将服务器设置为打印到一个文件,我跟踪所有接收到的POST参数,但我在POST正文中没有显示任何内容。我尝试了来自的解决方案以及在线教程,如 例如,这里的代码几乎直接来自,只更改了URL和post参数: -(void)postTest { NSString *textContent = @"XXXXX"; NSString *noteDataString = [NSString st

我一定是遗漏了一些基本的东西,因为我根本无法使用POST获得任何NSURLSession示例。我已经将服务器设置为打印到一个文件,我跟踪所有接收到的POST参数,但我在POST正文中没有显示任何内容。我尝试了来自的解决方案以及在线教程,如

例如,这里的代码几乎直接来自,只更改了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正文中唯一的参数是YYYY参数,但它根本不显示

RayWenderlich示例也不起作用: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];
    }
}
有什么我没有安排的吗?我没想到向NSURLSERSESSION的转变会有如此微妙的陷阱,我想知道是我做错了还是错过了什么愚蠢的事情。谢谢你的帮助

关于uploadTaskWithRequest:fromData:completionHandler:

提供URL、缓存策略和请求的NSURLRequest对象 类型,等等。此请求对象中的正文流和正文数据 都被忽略了