java.io.IOException: Nie znaleziono wyzwań związanych z uwierzytelnianiem
Jestem nowicjuszem na Androida i to jest mój pierwszy projekt na Androida. Przez ponad dzień zmagam się z problemem „uwierzytelniania”. Próbowałem kilku opcji, ale żadna z nich nie działała.
Zasadniczo chcę wywołać API REST i uzyskać odpowiedź. Jestem pewien, że w API nie ma problemu, ponieważ używam tego samego w innej aplikacji na iOS.
Przekazuję nagłówek autoryzacji, ale mimo to uwierzytelnianie nie jest wyświetlane. Znalazłem kilka pytań na temat stackoverflow związanych z tym, ale niektóre z nich nie zadziałały, a inne nie mają dla mnie sensu.
Dostaję kod statusu401
. Wiem, że to oznacza, że albo nie minęło uwierzytelnienie, albo jeśli minęło, to się mylą. Jestem pewien, że moje przekazane są poprawne.
Poniżej znajduje się mój kod:
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();
}
Patrzeć nazrzut ekranu logcata:
Każda pomoc byłaby doceniana. Dziękuję Ci.