ios - tutorial - alamofire




(Errore Cacao 3840.) "(Valore non valido attorno al carattere 0.) AFNetworking (2)

A giudicare dalla discussione nei commenti sembra che la tua richiesta GET abbia successo (codice di risposta 200), ma il corpo della risposta non è JSON valido (né un frammento JSON) come richiesto dall'uso di AFJSONResponseSerializer . Un AFHTTPResponseSerializer base può essere utilizzato per le risposte che non sono JSON.

Ho ricevuto il seguente errore quando utilizzo il metodo GET per recuperare un file da un server:

Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x16e81ed0 {NSDebugDescription=Invalid value around character 0.}

Ho provato una serie di cose diverse e credo che potrebbe essere qualcosa a che fare con il formato JSON sul file che sto cercando di ottenere.

Ecco il codice che ho usato:

_username = @"JonDoe";
NSDictionary *parameters = @{ @"username" : _username};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];

[manager GET:@"http://.........."
  parameters:parameters
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
         NSLog(@"JSON: %@", responseObject);
     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         NSLog(@"Error: %@", error);
     }];

Il mio metodo POST funziona correttamente. Non riesco a risolvere questo problema con GET. Qualche idea? Grazie.


Ciao ragazzi questo è quello che ho scoperto essere il mio problema: stavo chiamando Alamofire tramite una funzione per autenticare gli utenti: ho usato la funzione "Login User" con i parametri che sarebbero stati chiamati dal "body" (email: String, password: String) Questo sarebbe passato

il mio errr era esattamente:

facoltativo (alamofire.aferror.responseserializationfailed (alamofire.aferror.responseserializationfailurereason.jsonserializationfailed (error domain = nscocoaerrordomain code = 3840 "valore non valido attorno al carattere 0." userinfo = {nsdebugdescription = valore non valido attorno al carattere 0

il carattere 0 è la chiave qui: significa che la chiamata per "email" non corrisponde ai parametri: vedere il codice qui sotto

func loginUser (email: String, password: String, completato: @escaping downloadComplete) {let lowerCasedEmail = email.lowercased ()

    let header = [
        "Content-Type" : "application/json; charset=utf-8"
    ]
    let body: [String: Any] = [
        "email": lowerCasedEmail,
        "password": password
    ]

    Alamofire.request(LOGIN_USER, method: .post, parameters: body, encoding: JSONEncoding.default, headers: header).responseJSON { (response) in
        if response.result.error == nil {

            if let data = response.result.value as? Dictionary<String, AnyObject> {
                if let email = data["user"] as? String {
                    self.userEmail = email
                    print(self.userEmail)
                }
                if let token = data["token"] as? String {
                    self.token_Key = token
                    print(self.token_Key)
                }

"email" nei parametri di funzione deve corrispondere al let "email" durante l'analisi, quindi funzionerà ... Non ho più ricevuto l'errore ... E il carattere 0 era l'"email" nel parametro "body" per la richiesta Alamofire:

Spero che questo ti aiuti







afnetworking-2