2014-10-16 28 views
0

我必須缺少一些基本的東西,因爲我無法使用POST來獲取任何NSURLSession示例。我有我的服務器設置爲打印(我尾巴的文件)所有收到的POST參數,並沒有什麼我放在POST正文顯示。我試過Send POST request using NSURLSession的解決方案以及在線教程,如the Ray Wenderlich Cookbook for using NSURLSessionNSURLSession的最小POST示例

這裏,例如,是代碼從Stackoverflow thread, mentioned above幾乎直接,只有URL和後參數變化:

-(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會有這樣微妙的詭計,我想知道是我做錯了還是失蹤。謝謝你的幫助!

回答

0

Apple Documentation關於uploadTaskWithRequest請求參數:fromData:completionHandler:

一個的NSURLRequest對象,它提供的URL,高速緩存策略,請求 類型,等等。此請求對象 中的主體流和主體數據將被忽略。