Как отправлять данные json в запросе Http с помощью NSURLRequest

Я новичок в objective-c, и в последнее время я начинаю прилагать много усилий к запросу / ответу. У меня есть рабочий пример, который может вызывать URL-адрес (через http GET) и анализировать возвращенный json.

Рабочий пример этого ниже

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    [responseData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [responseData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
  NSLog([NSString stringWithFormat:@"Connection failed: %@", [error description]]);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    [connection release];
  //do something with the json that comes back ... (the fun part)
}

- (void)viewDidLoad
{
  [self searchForStuff:@"iPhone"];
}

-(void)searchForStuff:(NSString *)text
{
  responseData = [[NSMutableData data] retain];
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.whatever.com/json"]];
    [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

Мой первый вопрос: будет ли этот подход расширяться? Или это не асинхронный режим (это означает, что я блокирую поток пользовательского интерфейса, пока приложение ожидает ответа)

Мой второй вопрос - как я могу изменить часть запроса, чтобы выполнить POST вместо GET? Это просто изменить HttpMethod таким образом?

[request setHTTPMethod:@"POST"];

И, наконец, - как мне добавить набор данных json в этот пост в виде простой строки (например)

{
    "magic":{
               "real":true
            },
    "options":{
               "happy":true,
                "joy":true,
                "joy2":true
              },
    "key":"123"
}

Заранее спасибо

79
задан VikingoS says Reinstate Monica 16 December 2010 в 04:56
поделиться