Как получить строку ответа и проанализировать ее с помощью ASIHTTPRequest? - PullRequest
0 голосов
/ 15 июня 2011

Я использую ASIHTTPRequest для подключения к веб-сервису.Я не понимаю, что мне делать дальше.Когда я запускаю приведенный ниже код, я не получаю никакой строки вывода или ответа.Программа работает без ошибок.Что я должен сделать, чтобы получить строку ответа и разобрать ее?

Код

-(void)callWebService
{

    //this is a typical url for REST webservice, where you can specify the method that you want to call and the parameters directly with GET

    NSURL *url = [NSURL URLWithString:@"https://www.googleapis.com/customsearch/v1?key=AIzaSyDzl0Ozijg2C47iYfKgBWWkAbZE_wCJ-2U&cx=017576662512468239146:omuauf_lfve&q=lectures"];
    //https://www.googleapis.com/customsearch/v1?key=AIzaSyDzl0Ozijg2C47iYfKgBWWkAbZE_wCJ-2U&cx=017576662512468239146:omuauf_lfve&q=lectures&callback=handleResponse    

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

    [request setDidFinishSelector:@selector(requestCompleted:)];
    [request setDidFailSelector:@selector(requestError:)];

    [request setDelegate:self];
      // [request setRequestMethod:@"GET"];
    [request startAsynchronous];
}

- (void)requestCompleted:(ASIHTTPRequest *)request
{
   NSString *responseString = [request responseString];
}

- (void)requestError:(ASIHTTPRequest *)request
{
   NSError *error = [request error];
}

1 Ответ

1 голос
/ 15 июня 2011

Ваш код работает просто отлично.Просто добавьте несколько NSLogs в ваши методы делегата.NSLog(@"ResponseString:%@",responseString); и зарегистрируйте ошибку на NSLog(@"Error:%@",[error description]);.

. Возможно, ваша проблема связана с тем, что для ASIHttpRequest установлено время по умолчанию из 10 секунд.

Редактировать:

- (void)requestCompleted:(ASIHTTPRequest *)request
{
    NSString *responseString = [request responseString];
    NSLog(@"ResponseString:%@",responseString);
}

- (void)requestError:(ASIHTTPRequest *)request
{
    NSError *error = [request error];
    NSLog(@"Error:%@",[error description]);
}

Редактировать 2:

 if([responseString length]){
        // do some thing
    }

Для преобразования из NSString в NSDictionary просто используйте json-framework .

NSDictionary *returnDict = [responseString JSONValue];
...