gpt4 book ai didi

java - Android:Volley 请求在已发布的 APK 中不起作用,而在调试中有效

转载 作者:行者123 更新时间:2023-12-02 06:05:54 25 4
gpt4 key购买 nike

我已经为 POST 创建了一个简单的 Volley 请求

//post request handler
public void PostRequest(final int queryType, String url, final String jsonData) {
StringRequest req = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {

@Override
public void onResponse(String response) {
for (ApiRequestHandler commHandler : responseListeners) {
commHandler.responseHandler(response);
}
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
for (ApiRequestHandler commHandler : errorListeners) {
commHandler.errorHandler(error);
}
}
}) {
@Override
public byte[] getBody() {
return jsonData.getBytes();
}

@Override
public String getBodyContentType() {
return "application/json";
}

@Override
public Map<String, String> getHeaders() {

HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
getVolleyQueue().add(req);
}

当我在 Debug模式下发送请求(Android 设备连接到 Android Studio)时,此方法有效,而当我发布应用程序并收到 400 错误时,此方法不起作用。我已添加互联网权限。

应用程序发布时很难调试,我只是在收到错误时尝试 toast 。堆栈跟踪就是这样,但对我没有帮助。

com.android.volley.toolbox.BasicNetwork.a(Unknown Source:255),
com.android.volley.NetworkDispatcher.b(Unknown Source:37),
com.android.volley.NetworkDispatcher.run(Unknown Source:5)

我花了一天的时间来解决这个问题,我的一些建议:

  • 当从服务器端发布发送请求时,我可以看到正文为空白,但在 APK 级别打印数据

  • 我也尝试过 jsonData.getBytes("utf-8"); 但没有成功

  • 我正在使用实现“com.android.volley:volley:1.1.1”

我还需要一些关于调试已发布的 apk 的更好方法的指南。谢谢!

最佳答案

经过更多挖掘,我可以找到根本原因:

问题是因为我为发布构建类型启用了 ProGuard 作为 minifyEnabled true。它通过各种方式压缩和混淆代码,例如更改类名、变量、常量等。

Gson,使用动态键命名来缩短键。

为了解决这个问题,我使用了 @SerializedName("keyName") 注解来让 Gson 知道将什么视为键。

例如:

public class UserInfo {
@SerializedName("user_name")
public String userName;
@SerializedName("mobile")
public String mobile;
}

希望这能拯救某人的一天!

关于java - Android:Volley 请求在已发布的 APK 中不起作用,而在调试中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55940246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com