再次:使用发布数据请求JSON的简单方法

时间:2013-04-13 10:57:18

标签: objective-c json nsurlconnection nsurlrequest

我是Xcode和Objective-C的新手......我收到一个JSON-Array来显示我的TableView中的内容:

-viewDidLoad

[super viewDidLoad];
self.navigationItem.title = @"Kategorien";
NSURL *url = [NSURL URLWithString:@"http://www.visualstudio-teschl.at/apptest/kats.php"];
NSData *jsonData = [NSData dataWithContentsOfURL:url];   
if(jsonData != nil)
{
    NSError *error = nil;
    _kategorien = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
}

并在我的cellForRowAtIndexPath:方法中:

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault    reuseIdentifier:CellIdentifier];
}
NSDictionary *data = [self.kategorien objectAtIndex:indexPath.row];
cell.textLabel.text = [data objectForKey:@"KAT_NAME"];

return cell;

效果很好,并在我的表格中显示我的字符串(键 - > KAT_NAME)。

但是:如何根据我的要求发送字符串?例如,我想用我的请求发送“searchnumber = 2”,就像使用javascript / jquery的ajax-request一样?

我搜索了但是只能找到难以解决的问题(也许是超大尺寸的?)以满足我的需求...是不是像我的请求那样简单的方法和像“sendWithData”这样的广告或者这种方法与我的完全不同简单的要求?

1 个答案:

答案 0 :(得分:4)

如果要POST数据,则需要创建NSMutableURLRequest对象。您不应该使用[NSData dataWithContentsOfURL:],因为这会创建同步请求并阻止UI。尽管代码更多,但这是正确的方法:

NSURL *url = [NSURL URLWithString:@"http://www.visualstudio-teschl.at/apptest/kats.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"searchnumber=2" dataUsingEncoding: NSASCIIStringEncoding];
[NSURLConnection sendAsynchronousRequest: request
                                   queue: [NSOperationQueue mainQueue]
                       completionHandler:
  ^(NSURLResponse *r, NSData *data, NSError *error) {
    // do something with data
}];