iOS Bildung: Warum ist mein NSURLConnection andernfalls mit einer "bad URL" - Fehler nur für einige Benutzer?
Habe ich eine iOS-app, die die Anforderungen JSON
Daten von meinem Rails 3 app, gehostet auf Heroku, und es funktioniert Super auf meinem Gerät und für viele andere Anwender, mit einer Ausnahme. Ich habe einen Benutzer, der hat mir gesagt, dass meine app nicht zum abrufen von JSON-Daten, so hatte ich Sie senden Sie mir einige Daten loggen und das log zeigte die NSURLConnection
delegate-Methode didFailWithError
aufgerufen wird und die Fehlerbeschreibung liest "bad URL". Warum ist dieser Fehler Auftritt, und warum ist es NUR auftreten, auf nur einige Geräte, anstatt alle Geräte?
Hier ist mein code,
-(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]]];
}
und das log zeigt...
bad URL - (null) - (null) - (null)
Vielen Dank für Ihre Weisheit!
- Sind die Benutzernamen von denen, die es erleben Abstürze/Ausfälle auf der Suche verdächtige?
- schauen Sie auf meine Antwort für die ausführlichere Antwort : stackoverflow.com/questions/6287230/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es nicht so Aussehen, wie Sie sind-Kodierung der Nutzername. Sind da Leerzeichen oder andere Sonderzeichen im Benutzernamen? Blick in die
NSString
MethodestringByAddingPercentEscapesUsingEncoding:
.Ist es wahrscheinlich, dass diese abhängig von der spezifischen URL enthält Zeichen, die nicht zulässig sind für eine URL.
Können Sie versuchen und die Flucht der URL:
Ich bin mir nicht sicher, wie Sie Sie-wenn überhaupt-es bezieht sich auf deine Frage, aber das ändern der Region in der App "Einstellungen" hatte einen Einfluss auf meine app die Möglichkeit zum download. Es wurde spuckt die gleichen Schlechten URL-Fehler, wenn die region wurde nicht auf USA eingestellt. Es könnte erklären, warum einige Benutzer sind immer Fehler und andere nicht.
Diese Art von Problem kann kommen durch argument-Daten mit Sonderzeichen(zB. Andy & Co). SEIFE automatisch ablehnen diese Anfrage und gibt Schlechte URL oder Bad Request. Also, bevor Sie senden die Daten bitte sicherzustellen, dass die Daten mit Sonderzeichen wie &,<,>...
Wenn Sie gefunden & in Ihre string-Daten , ersetzen mit <&>amp; Zeichenfolge(zB.Andy <&>amp; Co). Hoffe, dass dieser Eingang für Sie zu helfen.
Anmerkung: Vor der Verwendung,entfernen Sie Bitte start(<>) und end-tag mit diesem symbol.