2012-04-18 2 views
0

Я сделал это до сих пор. Это код, который сделает запрос строки json с заголовком http. Когда я запускаю этот код, я не получаю ошибок. Но я получаю сообщение об отсутствии результата. Я должен получить ответ от веб-службы после отправки этого HTTP-заголовка.Получить данные ответа веб-службы

код:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSString *nid = @""; 
    NSString *vocab = @""; 
    NSString *inturl = @"testoverview"; 
    NSString *mail = @"[email protected]"; 
    NSString *md5pw = @"4d57e7ef1b7c3f431aca424764e9d786"; 

    NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
            nid, @"nid", 
            vocab, @"vocab", 
            inturl, @"inturl", 
            mail, @"mail", 
            md5pw, @"md5pw",nil]; 
    NSError *error; 
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:NSJSONWritingPrettyPrinted error:&error]; 
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

    if (!jsonData) { 
     NSLog(@"Got an error; %@", error); 
      } else if(jsonData) { 

       NSString *url = @"http://www.taenk.dk/services/mobile"; 
       NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0]; 

       [request setValue:jsonString forHTTPHeaderField:@"X-FBR-App"]; 
       [[NSURLConnection alloc] initWithRequest:request delegate:self]; <-- this line triggers the warning: "Expression result unused" 

       NSLog(@"jsonString %@", jsonString); 

      } 

Может кто-нибудь прояснить 2 вещи для меня:

  1. ли этот триггер ответ, как только запрос к веб-сервиса?
  2. Если да, как распечатать этот результат?

ответ

1

Вам необходимо присвоить результат переменной как

NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:... 

для дальнейшего использования (например, [con cancel];)

Тогда вы должны по крайней мере реализовать метод делегата connection:didFailWithError:. В ссылке класса я больше не вижу connection:didFinishLoading.... Можете ли вы использовать sendSynchronousRequest:returningResponse:error: вместо этого, тогда вы получите результат, будь то положительный или отрицательный.

Это, как я извлечь данные (эта версия без ARC):

- (void) connection :(NSURLConnection *)conn didReceiveData :(NSData *)data { 
    NSString *msg = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
    [self checkAutoMailReply:msg]; 
    [msg release]; 
} 

msg содержит данные чистый ответ, без заголовка или таковой.

+0

Можете ли вы уточнить больше? Я новичок в Objective-C. Im использует асинхронный подход при этом и реализовал методы делегирования и использовал некоторые из них. Дело в том, что у меня есть метод didRevieveData, который принимает nsdata как параметр. Проблема в том, что я не знаю, как получить данные ответа из запроса, который я отправляю в службу. Так что я отправляю запрос на услугу, не зная, как получить отпечаток. – Lahib

+0

@Lahib Я отредактировал свой ответ, надеюсь, что это поможет. –

Смежные вопросы