Iphone dev: как я могу получить результат от конвертера валют Google?

Извините за мой английский ^^ Я хотел бы знать, как я могу получить результат от инструмента конвертера Google для валюты, доступного на http://www.google.com/finance/converter?a=1&from=USD&to=GBP, например.

Я уже пробовал нечто подобное:

    -(IBAction)getResponse:(id) sender{

     NSString *myURLString = @"http://www.google.com/finance/converter?a=1&from=USD&to=GBP";

     NSURL *myURL =  [NSURL URLWithString: myURLString];

     NSData *data = [NSData alloc];

     data=[NSData dataWithContentsOfURL:myURL];


     if(data!=nil && data != ""){

          NSString *response = [[[NSString alloc] initWithData:data]]

          [label setText: response];

     }

     else [label setText:@"not working"];
}

Но когда я нажимаю на свою кнопку, метка не имеет текста (она как бы пуста). Я делаю что-то неправильно ? Возможно ли то, что я хочу сделать? Большое спасибо за ваши ответы на будущее! Оливье.


person Olivier.G    schedule 12.04.2011    source источник
comment
Вы знаете, что это вернет полную HTML-страницу. См. эту страницу с примером использования API конвертера Google: oohhyeah.blogspot.com/2009/01/   -  person rckoenes    schedule 12.04.2011
comment
NSЗарегистрируйте свой ответ и посмотрите, что вы получите. Проверьте, является ли это NSString, я так не думаю.   -  person visakh7    schedule 12.04.2011


Ответы (4)


Да.. Это возможно... Посмотрите, данные, которые вы получаете, представляют собой файл HTML или могут обрабатываться как xml. Просто проанализируйте этот XML-файл и получите результат. В этом файле много всего, но вам нужно только извлечь

<div id=currency_converter_result>1 USD = <span class=bld>0.6118 GBP</span> 

Эй, попробуйте этот URL http://www.google.com/ig/calculator?hl=en&q=1USD=?INR

Этот URL вернет JSON

{слева: "1 доллар США", справа: "44,5097254 индийских рупий", ошибка: "", icc: true}

Просто разберите его. :)

person Inder Kumar Rathore    schedule 12.04.2011

Пытаться...

NSData *data = [[NSData alloc] init];

Затем проверьте, что у вас есть что-то в ответ

NSLog(@"%@", response);

А еще лучше удалите NSData alloc/init

Заменить

 

NSData *data=[NSData dataWithContentsOfURL:myURL];

И вам нужно будет проанализировать возвращаемый результат, потому что вы не получите того, что ожидаете. Ответ будет содержать HTML-страницу.

person Jordan    schedule 12.04.2011

Вам лучше использовать асинхронный запрос, чтобы избежать блокировки вашего приложения. Легко использовать ASIHTTPRequest:


- (IBAction)grabURLInBackground:(id)sender
{
   NSURL *url = [NSURL URLWithString:@"http://www.google.com/finance/converter?a=1&from=USD&to=GBP"];
   ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
   [request setDelegate:self];
   [request startAsynchronous];
}


- (void)requestFinished:(ASIHTTPRequest *)request
{
   // Use when fetching text data
   NSString *responseString = [request responseString];



   [label setText: responseString];

}

- (void)requestFailed:(ASIHTTPRequest *)request
{
   NSError *error = [request error]; //you can log the error description

   [label setText:@"not working"];

}

person Youssef    schedule 12.04.2011

NSString *myURLString = @"http://www.google.com/finance/converter?a=1&from=USD&to=GBP";

NSURL *myURL =  [NSURL URLWithString: myURLString];

NSData *data = [NSData alloc];

data=[NSData dataWithContentsOfURL:myURL];


if(data!=nil){

    NSString *response = [[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding];

    NSLog(@"%@",response);
}

Попробуйте это. Этот API дает HTML-ответ.

person Rakesh Bhatt    schedule 12.04.2011