iOS开发:为什么我的NSURLConnection只有一些用户出现“错误的URL”错误?

我有一个iOS应用程序,它从Heroku上托pipe我的Rails 3应用程序请求JSON数据,并且在我的设备和许多其他用户(除了一个用户)上效果很好。 我有一个用户告诉我,我的应用程序无法检索JSON数据,所以我让她给我发送一些日志数据,日志显示NSURLConnection委托方法didFailWithError被调用,错误描述为“bad 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) 

非常感谢您的智慧!

它看起来不像你正在编码的用户名。 用户名中是否有空格或其他特殊字符? 看看使用NSString方法stringByAddingPercentEscapesUsingEncoding:

这很可能取决于包含URL不允许的字符的特定URL。

您可以尝试转义该url:

 - (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding` 

我不确定如果与您的问题有关,但是在“设置”应用程序中更改“区域”对我的应用程序的下载能力有影响。 如果该地区没有设置为美国,那么它正在吐出相同的错误url错误。 这也许可以解释为什么有些用户会得到错误,而不是其他人

这种问题可能会由于具有特殊字符的参数数据(即Andy&Co)而产生。 SOAP将自动拒绝此请求并返回错误的URL或错误的请求。 因此,在发送数据前,请确保数据中包含&,<,> …等特殊字符。如果您在string数据中find&,请用<&amp; (例如,Andy&amp; Co)。 希望这个input对你有帮助。

注意:在使用之前,请使用该符号删除开始(<>)和结束标记。