Sono novizio per Android e questo è il mio primo progetto su Android. Sto lottando con il problema di "autenticazione" per più di un giorno. Ho provato diverse opzioni ma nessuna ha funzionato.java.io.IOException: Nessun problema di autenticazione trovato
Fondamentalmente, voglio chiamare un'API REST e ottenere risposta. Sono sicuro che non ci sono problemi in API poiché utilizzo lo stesso in un'altra applicazione iOS.
Ho passato l'intestazione di autorizzazione ma ancora l'autenticazione nessun messaggio trovato è indicato. Ho trovato poche domande sullo stackoverflow relative a questo, ma alcune di esse non hanno funzionato e alcune non hanno senso per me.
Ricevo il codice di stato 401
. So che questo significa che nessuna autenticazione è passata o se è passata, quindi sono sbagliate. Qui, sono sicuro che i miei passati sono corretti.
Qui di seguito è il mio codice:
try {
url = new URL(baseUrl);
}
catch (MalformedURLException me) {
Log.e(TAG, "URL could not be parsed. URL : " + baseUrl + ". Line : " + getLineNumber(), me);
me.printStackTrace();
}
try {
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod(method);
urlConnection.setConnectTimeout(TIMEOUT * 1000);
urlConnection.setChunkedStreamingMode(0);
// Set HTTP headers
String authString = "username:password";
String base64Auth = Base64.encodeToString(authString.getBytes(), Base64.DEFAULT);
urlConnection.setRequestProperty("Authorization", "Basic " + base64Auth);
urlConnection.setRequestProperty("Accept", "application/json");
urlConnection.setRequestProperty("Content-type", "application/json");
if (method.equals("POST") || method.equals("PUT")) {
// Set to true when posting data
urlConnection.setDoOutput(true);
// Write data to post to connection output stream
OutputStream out = urlConnection.getOutputStream();
out.write(postParameters.getBytes("UTF-8"));
}
try {
// Get response
in = new BufferedInputStream(urlConnection.getInputStream());
}
catch (IOException e) {
Log.e(TAG, "Exception in getting connection input stream. in : " + in);
e.printStackTrace();
}
// Read the input stream that has response
statusCode = urlConnection.getResponseCode();
Log.d(TAG, "Status code : " + statusCode);
}
catch (ProtocolException pe) {
pe.printStackTrace();
}
catch (IllegalStateException ie) {
ie.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
urlConnection.disconnect();
}
Guardate screenshot di logcat:
Qualsiasi aiuto sarebbe apprezzato. Grazie.
String authString = "nomeutente: password"; questo "nome utente: password" dovrebbe essere uguale alle loro stringhe intendo nel modello degli sviluppatori del sito web. per esempio: possono usare Loginid: password del genere. – manivannan
@Akash hai trovato una soluzione a questo? – AsafK
@AsafK Il motivo era che HttpUrlConnection generava un'eccezione per il codice di stato 400 e successivi. Dobbiamo gestire questa eccezione. Nel mio caso, ho finito per utilizzare HttpClient anziché HttpUrlConnetion per la gestione di tutti i codici di stato. – Geek