2015-11-16 25 views
1

我有這樣的結構在Web服務:在HTTP Post上發送NSDictionary的格式是什麼?

{ 
    "user": 
    { 
     "email":"[email protected]", 
     "password":"12345678", 
     "objectId":"2334jklwf", 
     "token":"12334023ijrdadfsdoifj" 
    } 
} 

我需要一個HTTP POST使用NSURLSession(iOS版9)。因此,我需要創建一個名爲'user'的密鑰的字典,並在該密鑰的另一個字典中顯示所有的密鑰,對吧?那麼POST是什麼方式呢?

+0

您正在使用Obj-c? –

回答

-1

你可以請求

request.HTTPMethod = "POST" 
      request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
      if let data = param?.JsonStringWithPrettyPrint(){ 
       request.HTTPBody = NSString(string: data).dataUsingEncoding(NSUTF8StringEncoding) 
      } 

身上設置JSON在那裏:一個參數是你的字典 和JsonStringWithPrettyPrint是的NSDictionary的extentsion:

extension NSDictionary { 
    func JsonStringWithPrettyPrint()-> String? { 
     do{ 
      let data = try NSJSONSerialization.dataWithJSONObject(self, options: NSJSONWritingOptions.PrettyPrinted) 
      return NSString(data: data, encoding: NSUTF8StringEncoding) as? String 
     }catch{ 
      return nil 
     } 
    } 
} 
0

按照功能對我的作品你可以試試用它。您可以在NSURLSessionConfiguration對象中設置header values

- (void)callWS { 

    NSURL * url = [NSURL URLWithString:@"Your URL"]; 
    NSURLSessionConfiguration * config = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    NSURLSession * session = [NSURLSession sessionWithConfiguration:config]; 


    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
    request.HTTPMethod = @"POST"; 

    NSDictionary * dicData = [NSDictionary dictionaryWithObjectsAndKeys:@"[email protected]",@"email",@"12345678",@"password",@"2334jklwf",@"objectId", nil]; 


    NSDictionary *dictionary = @{@"user": dicData}; 
    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) { 

                     // Handle response here 
                    }]; 

     [uploadTask resume]; 
    } 
} 
相關問題