Why not work POST method in retrofit in Android -
i want use retrofit library post , methods server. when use proguard , generate apk not running post codes!
my register codes:
@override public void onclick(view view) { switch (view.getid()) { case r.id.register_button: name = registername.gettext().tostring(); email = registeremail.gettext().tostring(); password = registerpassword.gettext().tostring(); if (!name.isempty() && !email.isempty() && !password.isempty()) { if (password.length() < 6) { snackbar.make(getview(), "", snackbar.length_long).show(); } else { registerload.setvisibility(view.visible); registersend.setvisibility(view.invisible); registerprocess(name, email, password); } } else { snackbar.make(getview(), "fill fields", snackbar.length_long).show(); } break; } } private void registerprocess(string name, string email, string password) { gson gson = new gsonbuilder() .setlenient() .create(); okhttpclient client = new okhttpclient(); retrofit retrofit = new retrofit.builder() .baseurl(constants.base_url) .client(client) .addconverterfactory(gsonconverterfactory.create(gson)) .build(); retrofit_apiinterface requestinterface = retrofit.create(retrofit_apiinterface.class); user user = new user(); user.setname(name); user.setemail(email); user.setpassword(password); serverrequest request = new serverrequest(); request.setoperation(constants.register_operation); request.setuser(user); call<serverresponse> response = requestinterface.operation(request); response.enqueue(new callback<serverresponse>() { @override public void onresponse(call<serverresponse> call, response<serverresponse> response) { try { serverresponse resp = response.body(); if (resp.getresult() != null && resp.getresult().equals("success")) { snackbar.make(getview(), stringescapeutils.unescapehtml4(resp.getmessage()), snackbar.length_long).show(); gotologin(); registerload.setvisibility(view.invisible); registersend.setvisibility(view.invisible); } else { registersend.setvisibility(view.visible); snackbar.make(getview(), stringescapeutils.unescapehtml4(resp.getmessage()), snackbar.length_long).show(); } } catch (exception e) { log.e("registerexception", "" + e); } } @override public void onfailure(call<serverresponse> call, throwable t) { registerload.setvisibility(view.invisible); registersend.setvisibility(view.visible); snackbar.make(getview(), "try again", snackbar.length_long).show(); } }); } private void gotologin() { fragment login = new loginfragment(); fragmenttransaction ft = getfragmentmanager().begintransaction(); ft.replace(r.id.loginfragment, login); ft.commit(); toolbartitle.settext("login"); registerfab.setimagedrawable(getresources().getdrawable(r.drawable.ic_login_add)); } } my proguard ruls :
-dontwarn retrofit2.** -keep class retrofit2.** { *; } -keepattributes signature -keepattributes exceptions when use get methods not show me error, when use post method show me error!
in code, when register "success" or "failure" should message server , show in snackbar. when generate apk proguard not show me message in snackbar!
i added below codes in proguard-rules not obfuscate models , interface, work me again , not show anymessage server.
-dontwarn com.test.app.retrofit.rest.** -dontwarn com.test.app.retrofit.model.user.** how can fix problem? please me, need help
##---------------begin: proguard configuration gson ---------- # gson uses generic type information stored in class file when working fields. proguard # removes such information default, configure keep of it. -keepattributes signature # using gson @expose annotation -keepattributes *annotation* # gson specific classes -keep class sun.misc.unsafe { *; } #-keep class com.google.gson.stream.** { *; } # application classes serialized/deserialized on gson -keep class your.package.models.** { *; } # prevent proguard stripping interface information typeadapterfactory, # jsonserializer, jsondeserializer instances (so can used in @jsonadapter) -keep class * implements com.google.gson.typeadapterfactory -keep class * implements com.google.gson.jsonserializer -keep class * implements com.google.gson.jsondeserializer ##---------------end: proguard configuration gson ---------- # platform calls class.forname on types not exist on android determine platform. -dontnote retrofit2.platform # platform used when running on java 8 vms. not used @ runtime. -dontwarn retrofit2.platform$java8 # retain generic type information use reflection converters , adapters. -keepattributes signature # retain declared checked exceptions use proxy instance. -keepattributes exceptions use above rules retrofit work progaurd note: supposed keep model classes here -keep class your.package.models. { *; } have suitable name
Comments
Post a Comment