这是我必须发布的json字符串…
{ "data": { "description": "", "current_value": "", "serialno": "", "condition": "", "category": "category", "purchase_value": "", "new_or_used": "", "gift_or_purchase": "", "image": "" }, "subtype": "fd3102d8-bc19-424b-bca2-774a8fd7ea6f" }
如何发布为JSON?
当然,这是一个重复的问题,但这是完整的示例代码,作为一个长例程。只需复制并粘贴。
首先设置JSON …
-(void)sendTestJsonCommand { NSMutableDictionary *dict = @{ @"heights":@"4_5_7", @"score":@"4", @"title":@"Some Title", @"textBody":@"Some Long Text", @"happy":@"y" }.mutableCopy; NSError *serr; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&serr]; if (serr) { NSLog(@"Error generating json data for send dictionary..."); NSLog(@"Error (%@), error: %@", dict, serr); return; } NSLog(@"Successfully generated JSON for send dictionary"); NSLog(@"now sending this dictionary...\n%@\n\n\n", dict);
接下来,正确异步地将命令和json发送到您的服务器…
#define appService [NSURL \ URLWithString:@"http://www.corp.com/apps/function/user/pass/id/etc"] // Create request object NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:appService]; // Set method, body & content-type request.HTTPMethod = @"POST"; request.HTTPBody = jsonData; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [request setValue: [NSString stringWithFormat:@"%lu", (unsigned long)[jsonData length]] forHTTPHeaderField:@"Content-Length"]; // you would almost certainly use MBProgressHUD at this point // to display some sort of spinner or similar action on the UX
最后,(A)使用NSURLConnection正确连接,(B)正确解释从服务器返回给您的信息。
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *r, NSData *data, NSError *error) { if (!data) { NSLog(@"No data returned from server, error ocurred: %@", error); NSString *userErrorText = [NSString stringWithFormat: @"Error communicating with server: %@", error.localizedDescription] return; } NSLog(@"got the NSData fine. here it is...\n%@\n", data); NSLog(@"next step, deserialising"); NSError *deserr; NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&deserr]; NSLog(@"so, here's the responseDict\n\n\n%@\n\n\n", responseDict); // LOOK at that output on your console to learn how to parse it. // to get individual values example blah = responseDict[@"fieldName"]; }]; }
希望它可以节省一些键入的时间!