java.io.IOException: 未发现身份验证质询
我是机器人的新手,这是我在Android上的第一个项目。我与“身份验证”问题斗争了一天多。我尝试了几个选项,但没有一个有效。
基本上,我想调用一个REST API并获得响应。我确信API没有问题,因为我在另一个iOS应用程序中使用相同的API。
我传递了授权标头,但仍进行身份验证,未显示任何找到消息。我发现关于stackoverflow的问题很少与此相关,但其中一些不起作用,有些对我来说没有意义。
我收到状态代码。我知道这意味着要么没有通过身份验证,要么如果通过,那么他们就错了。在这里,我相信我通过的是正确的。401
以下是我的代码:
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();
}
看logcat的截图:
任何帮助将不胜感激。谢谢。