Ошибка NSURLErrorBadURL - PullRequest
       13

Ошибка NSURLErrorBadURL

0 голосов
/ 23 марта 2010

Мое приложение для iphone называется Локальный поиск Google (не в формате javascript) , чтобы вести поисковый бизнес.

Ниже приведен мой код для формирования 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];

Когда ключевое слово относится к английским символам, оно работает нормально, но когда ссылается на китайские символы (закодированные в UTF8, например 'Если код «UTF8» равен «e5a4a9 e5ae89 e997a8»), он сообщит об ошибке NSURLErrorBadURL (-1000, возвращается, если URL-адрес достаточно искажен, что запрос URL-адреса не может быть инициирован).Почему?

Затем я провожу дальнейшее расследование, использую Safari и набираю URL ниже: http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=天安门

Это также работает, и вывод, который я получил от Macsniffer: / ajax / services / search / local? V = 1,0 & q =% E5% A4% A9% E5% AE% 89% E9% 97% A8

Поэтому я пишу URL-адрес тестированияпрямо в моем приложении

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"];

И что я получил от Macsniffer - это еще кое-что: / ajax / services / search / local? v = 1.0 & q = 1.687891E-28750X1.417C0001416CP-102640X1.4CC2D04648FBP-9999-1.989891E + 0050X1.20DC00184CC67P-953E8E99A8

Кажется, мое ключевое слово "% E5% A4% A9% E5% AE% 89% E9% 97% A8" было переведено в нечтоостальное.Итак, как я могу сформировать действительный URL?Мне нужна помощь!

1 Ответ

1 голос
/ 23 марта 2010

Вы пробовали кодировать строку поиска:

NSString * escapedKeyword = [ключевое слово stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

...