2013-09-16 19 views
15

Ho appena provato AFNetworking su iOS7 e ottengo questo errore:AFNetworking - Parametro non valido non soddisfacente: url

/Classes/AFHTTPClient.m:227 
2013-09-16 18:25:57.557 App[13531:a0b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: url 

Non so cosa sta succedendo, c'è un problema con il LIB un iOS7? grazie.

+1

Ora sto lottando anche con questo problema. Hai già trovato una soluzione? – Leon

+0

ho commentato la linea 227: // NSParameterAssert (url); E funziona .. – arlg

+2

sarebbe d'aiuto se hai incluso il codice in cui il programma è erroring fuori. Ma, si dovrebbe verificare se si passa a zero nel parametro URL del tipo: '[[AFHTTPClient alloc] initWithBaseURL: nil]'. L'NSParameterAssert (url) è lì per evitare di inizializzare il client HTTP con un URL nullo. –

risposta

23

Come Leon dice nel suo commento, commentando fuori NSParameterAssert non è una soluzione ideale. Un'asserzione è stata messa lì per un motivo dall'autore di AFNetworking. È probabile che il codice che non passa l'asserzione sia causato da un URL non valido.

Ricordare che i metodi di produzione NSURL (ovvero + URLWithString: e i relativi fratelli) restituiscono nil quando vengono passati una stringa di URL non valida. In questo contesto, una stringa non valida è una stringa che contiene un URL non valido.

Quello che dovresti fare invece di commentare la nostra asserzione, è assicurarti che non stia passando nessun URL non valido all'istanza AFHTTPClient. This Stackoverflow answers fornisce un esempio di come è possibile convalidare un URL. Ecco un esempio dalla risposta:

- (BOOL)validateUrl:(NSString *)candidate { 
    NSString *urlRegEx = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"; 
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:candidate]; 
} 

In alternativa, si potrebbe aggiungere fughe percentuale utilizzando NSString s' stringByAddingPercentEscapesUsingEncoding metodo. Come questo:

NSString *encoded = [notEncoded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
+0

So che non è una soluzione ideale, ma avevo bisogno di una soluzione rapida. Non riesco a provare la tua risposta in questo momento perché non sto più lavorando al progetto. Comunque, grazie per la risposta, ci proverò quando lavorerò di nuovo sul progetto :). – arlg

+0

Contento di aver potuto aiutare :-) –

+0

cambiare codifica aiutami. Grazie –

4

Ho appena avuto questo errore, la causa era uno spazio all'inizio della url:

http://host.com/etc 
^ 
0

ho avuto un caso strano oggi con questa asserzione. Il mio problema era che ho copiato l'url da un altro editor di testo (Sublime) ed è per questo che l'url non era valido.

I credenti non è stato fino a quando ho provato alcune volte.

0

Speranza suo lavoro .. In AFnetworing nome della classe AFURLRequestSerialization.m

commented the line 227 : // NSParameterAssert(url); 
0

come Kasper risposta si può "si potrebbe aggiungere fughe percentuali utilizzando il metodo stringByAddingPercentEscapesUsingEncoding di NSString"

o meglio utilizzare il seguente dato è deprecato in ios 9

path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; 
Problemi correlati