2012-09-12 5 views
7

Sto sviluppando un'applicazione iOS che effettua richieste frequenti a un server Web e sto utilizzando AFNetworking (che mi piace molto). Tuttavia, ho riscontrato un problema con l'autorizzazione che non riesco a risolvere.L'intestazione di autorizzazione non viene inviata utilizzando AFNetworking

Il server mi richiede di fornire un'intestazione di autorizzazione per ottenere la risposta che desidero. In particolare, le intestazioni di autorizzazione dovrebbero essere in questo modo:

Authorization = "ApiKey some-user-name:someNumericalApiKey" 

sto usando AFNetworking durante tutto il progetto, e tutto funziona bene, tranne per questo problema di autorizzazione. Sto utilizzando il seguente codice:

[myClient setDefaultHeader:@"Authorization" value:@"ApiKey some-user-name:someNumericalApiKey"]; 

dove myClient punti a un oggetto AFHTTPClient. Stranamente, quando registro la richiesta in XCode utilizzando AFHTTPRequestOperationLogger, il registratore afferma che ho impostato le intestazioni corrette. Tuttavia, l'intestazione dell'autorizzazione non sembra raggiungere il server: non riesco a vederlo nel registro del server.

Per isolare il problema, ho provato a fare la stessa richiesta utilizzando il buon vecchio NSURLRequest, così come curl, e la biblioteca requests in Python - tutti questi funzionano bene, vale a dire l'intestazione di autorizzazione viene inviato & ricevuto (cioè posso vederlo nel registro del server), e la risposta del server è quello che dovrebbe essere.

Se qualcuno ha incontrato lo stesso problema (e ha trovato una soluzione), mi farebbe molto piacere sentirti.

Grazie.

+0

Il servizio colpito è un'applicazione Django su Heroku. – Khandelwal

+0

Ho incontrato lo stesso problema oggi. Molto strano. –

+0

qualsiasi soluzione a questo !? – bpn

risposta

0

Se si esegue manualmente l'operazione, le impostazioni predefinite non vengono applicate, ciò potrebbe essere la causa del problema.

2

A volte (in particolare con Django) questo è causato dallo stripping dei parametri di intestazione. Ad esempio,/Object reindirizza a/Object/in background e rimuove il parametro auth necessario durante lo switch.

Se si sta usando AFNetworkActivityLogger con il livello AFLoggerLevelDebug, si dovrebbe essere in grado di verificarlo nella console. Se vedi una richiesta POST con/Object e la risposta con/Object/allora questo potrebbe indicare che lo stripping di reindirizzamento sta avendo luogo.

+0

Questa risposta è la risposta corretta. Riferimento: https://github.com/AFNetworking/AFNetworking/issues/2116 – TharakaNirmana