Pergunta

Meu aplicativo para iPhone chamado Pesquisa local do Google (versão não JavaScript) para se comportar algum negócio de pesquisa.

Abaixo está o meu código para formar um URL:

NSString *url = [NSString stringWithFormat:@"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=%@", keyword];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"GET"];

//get response
NSHTTPURLResponse* urlResponse = nil;  
NSError *error = [[[NSError alloc] init] autorelease];  
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];  
NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

Quando a palavra-chave se refere a caracteres em inglês, funciona bem, mas quando se refere a caracteres chineses (codificados no UTF8, como '天安门' cujo código UTF8 é 'e5a4a9 e5ae89 e997a8'), ele relatará NSurlerrorbadurl Erro (-1000, devolvido quando Um URL é suficientemente malformado para que uma solicitação de URL não possa ser iniciada). Por quê?

Então eu realizo mais investigação, uso o Safari e digito o URL abaixo:http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q= 天安门

Também funciona, e a saída que obtive de Macsniffer é:/ajax/services/search/local?v=1.0&q=%E5%A4%A9%E5%E®%89%E9%97%A8

Então eu escrevo um URL de teste diretamente no meu aplicativo

NSString *url = [NSString stringWithFormat:@"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=%E5%A4%A9%E5%AE%89%E9%97%A8"];

E o que eu recebi do Macsniffer é outra coisa:/ajax/services/search/local?v=1.0&q=1.687891E-28750X1.417C0001416CP-102640X1.4CC2D04648FBP-9999-1.989891E+0050X1.20DC00184CC67P-953E8E99A8

Parece que minha palavra -chave "%E5%A4%A9%E5%AE%89%E9%97%A8" foi traduzida em outra coisa. Então, como posso formar um URL válido? Eu preciso de ajuda!

Foi útil?

Solução

Você já tentou codificar a sequência de pesquisa:

NSString* EscapeDKeyword = [Keyword StringByAddingPercentesCapeSUsingEncoding: NSUTF8StringEncoding];

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top