私はアンドロイドの初心者で、これがアンドロイドでの最初のプロジェクトです。「認証」の問題に1日以上苦労しています。いくつかのオプションを試しましたが、どれも機能しませんでした。
基本的にはREST APIを呼び出してレスポンスを取得したい。別のiOSアプリでも同じものを使っているのでAPI的には問題ないと思います。
認証ヘッダーを渡しますが、まだ認証が見つかりませんというメッセージが表示されます。これに関連するstackoverflowに関する質問はほとんど見つかりませんでしたが、機能しないものもあれば、意味をなさないものもあります。
status code を取得します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 のスクリーンショットを
見てください:
どんな助けでも大歓迎です。ありがとうございました。