私は元々、Android Studio の libs ディレクトリにcompile files('libs/ion-1.3.8.jar')
、build.gradle ファイルに含まれていたion-1.3.8.jar を持っていました。また、libsフォルダーにandroidasync-1.3.8.jarがあり、build.gradleにそのエントリがありました。
イオン jar を取り除き、代わりに依存関係を使用したいのですが、jar を削除compile 'com.koushikdutta.ion:ion:2.+
して build.gradle ファイルに入れると、エラー ("cannot resolve method get(String...))" が表示されます。私のクラスの1つにある次のコード行: result.getHeaders().get("USER-TOKEN");
.
おそらく、そのコード行は本来あるべきものではなかったと思いますが、Ion 1.3.8 では機能しました。何に変更すればいいのかわからず、試行錯誤すればわかると思いますが、コミュニティやKoushに聞いてみたいです。
また、Android Studio は、「バージョン番号に + を使用しないでください。予測不能で再現性のないビルドにつながる可能性があります」と警告しています。これについて何か考えはありますか?
これが私のコードです:
Ion.with(activity)
.load(url)
.setJsonObjectBody(loginObject)
.asJsonObject()
.withResponse()
.setCallback(new FutureCallback<Response<JsonObject>>() {
@Override
public void onCompleted(Exception e, com.koushikdutta.ion.Response<JsonObject> result) {
String errorText = activity.getString(R.string.unable_to_login);
if (e != null) {
String errorMessage = e.getLocalizedMessage();
Log.e(TAG, errorMessage);
if (errorMessage.contains(activity.getString(R.string.unable_resolve_host))) {
errorText = activity.getString(R.string.no_internet);
}
}
else if (result != null) {
JsonElement reply = result.getResult().get(activity.getString(R.string.user));
if (reply != null) {
errorText = NO_ERROR;
SessionManager.setProfile(result.getResult());
String userToken = result.getHeaders().get(activity.getString(R.string.user_token));
SessionManager.createLoginSession(userToken);
if (SessionManager.isProfileComplete()) {
activity.startActivity(new Intent(activity, NavigationDrawerActivity.class));
}
else {
activity.startActivity(new Intent(activity, ProfileActivity.class));
}
}
else if (result.getResult().getAsJsonArray(activity.getString(R.string.errors)) != null) {
errorText = activity.getString(R.string.login_error);
}
}
else { // There was some other problem logging in
Log.e(TAG, "Unknown login problem");
}
requestCompleted.onRequestCompleted(errorText);
}
});