Разработка iOS: почему мой NSURLConnection завершается с ошибкой «неверный URL» только для некоторых пользователей? - PullRequest
10 голосов
/ 28 мая 2011

У меня есть приложение для iOS, которое запрашивает JSON данные из моего приложения Rails 3, размещенного на Heroku, и оно отлично работает на моем устройстве и для многих других пользователей, кроме одного.У меня есть один пользователь, который сказал мне, что моему приложению не удается получить данные JSON, поэтому я попросил ее прислать мне некоторые данные журнала, и журнал показал, что вызывается метод didFailWithError делегата *1003*, а описание ошибки показывает * 1004.* "плохой URL" .Почему возникает эта ошибка и почему она возникает ТОЛЬКО на некоторых устройствах, а не на всех устройствах?

Вот мой код,

-(void)getTournamentInfoWithUsername:(NSString*)username
{
    NSString *urlString = [NSString stringWithFormat:@"http://myapp-tourney.heroku.com/tournaments/next.json?username=%@", username];
    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30];
    [self setUrlConnection:[[NSURLConnection alloc] initWithRequest:request delegate:self]];
}

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
{
    [MyLog logError:[NSString stringWithFormat:@"%@ - %@ - %@ - %@", [error localizedDescription], [error localizedFailureReason], [error localizedRecoveryOptions], [error localizedRecoverySuggestion]]];
}

и журнал показывает ...

bad URL - (null) - (null) - (null)

Большое спасибо за всю вашу мудрость!

Ответы [ 4 ]

30 голосов
/ 28 мая 2011

Не похоже, что вы кодируете имя пользователя. В имени пользователя есть пробелы или другие специальные символы? Изучите метод NSString stringByAddingPercentEscapesUsingEncoding:.

8 голосов
/ 28 мая 2011

Вероятно, это зависит от конкретного URL-адреса, содержащего символы, недопустимые для URL-адреса.

Вы можете попытаться скрыть URL-адрес:

- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding` 
1 голос
/ 22 января 2013

Я не уверен, как это вообще относится к вашей проблеме, но изменение региона в приложении «Настройки» повлияло на способность моего приложения к загрузке. Это выкладывало ту же ошибку Bad URL, если регион не был установлен в Соединенные Штаты. Это может объяснить, почему одни пользователи получают ошибки, а другие нет.

0 голосов
/ 02 сентября 2013

Проблема такого рода может возникать из-за того, что данные аргумента имеют специальные символы (например, Andy & Co).SOAP автоматически отклонит этот запрос и вернет неверный URL или неверный запрос.Поэтому перед отправкой данных убедитесь, что данные содержат специальные символы, такие как &, <,> ... Если вы обнаружили & в своих строковых данных, замените их на <&> amp;на эту строку (например, Andy <&> amp; Co).Надеюсь, что этот ввод поможет вам.

Примечание. Перед использованием удалите начальный (<>) и конечный тег с этим символом.

...