签名apk正在更改帖子参数名称

时间:2017-04-14 15:55:59

标签: c# android retrofit2 signed-apk

我有APP和c#web api应用程序使用retrofit2调用。我在对api进行调用时遇到问题,调用中的参数名称将更改为“a”和“b”而不是实际名称。

ApiInterface:

@POST("users/add")
Call<String> createUser(@Body UserSignUpModel user);

设置改造:

Gson gson = new GsonBuilder()
                    .setLenient()
                    .create();
retrofit = new Retrofit.Builder()
                    .baseUrl(Configuration.API_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .client(get_HTTPClient())
                    .build();

UserSignupModel:

public class UserSignUpModel
{
    public String UserName;
    public long PhoneNumber;
}

提出请求:

userSignUpModel.UserName = userName.getText().toString();
userSignUpModel.PhoneNumber = Long.parseLong(number.getText().toString());
Client.createUser(userSignUpModel, callback);

我还设置了fiddler拦截我从我的应用程序获取的请求,下面是结果:
1.当我点击调试或在android studio上运行时
While debug or run
2.当我生成一个签名的apk并从中发出请求时
While executing signed apk


我的要求因此而失败。任何帮助将不胜感激。
谢谢。

1 个答案:

答案 0 :(得分:0)

生成已签名的.apk将触发proguard(如果已启用)。哪个会混淆类等等。

有两种方法可以解决这种情况:

选项1:使用@SerializedName

更改您的UserSignUpModel.java,明确说明变量的名称:

import com.google.gson.annotations.SerializedName;

public class UserSignUpModel
{
    @SerializedName("UserName")
    public String UserName;
    @SerializedName("PhoneNumber")
    public long PhoneNumber;
}

选项2:更改proguard-rules.pro文件

将以下规则添加到proguard-rules.pro文件中,假设UserSignUpModel.java位于模型包中:

-keep class com.<packageName>.model.** { *; }