Iphone Dev: как я могу получить результат от конвертера валют Google? - PullRequest
1 голос
/ 12 апреля 2011

Извините за мой английский ^^ Я бы знал, как получить результат из инструмента конвертера 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"];
}

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

Ответы [ 4 ]

1 голос
/ 12 апреля 2011

Да .. Это возможно ... Посмотрите, что данные, которые вы получаете, являются 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

{lhs: "1 доллар США", rhs: "44.5097254 индийские рупии", ошибка: "", icc: true}

Просто проанализируйте его.:)

0 голосов
/ 12 апреля 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"];

}

0 голосов
/ 12 апреля 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.

0 голосов
/ 12 апреля 2011

Try ...

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

Тогда проверьте, что у вас что-то есть в ответ

NSLog(@"%@", response);

Еще лучше, удалить NSData alloc / init

Заменить на

1014 *

NSData *data=[NSData dataWithContentsOfURL:myURL];

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

...