java - 使用 volley 连接到 Android 中的服务器时出现内部服务器错误?

标签 java android android-volley

这是我使用 volley 发布的函数代码

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_CHECK_IN,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        int status = jsonObject.getInt("status");

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError response) {

                }
            }) {

        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }

        @Override
        public byte[] getBody() throws AuthFailureError {
            try {
                return requestBody == null ? null : requestBody.getBytes("utf-8");
            } catch (UnsupportedEncodingException uee) {
                VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                return null;
            }
        }

        @Override
        public Map<String, String> getHeaders () {
            Map<String, String> map = new HashMap<String, String>();
            map.put("Content-Type", "application/json");
            map.put("appid", appids);
            map.put("timestamp", timestamps);
            map.put("token", tokens);
            map.put("signature", signatures);
            return map;
        }
    };
}

我不知道我的代码出了什么问题,因为两天前一切都很好。 当我尝试调试时,错误显示如下

BasicNetwork.performRequest: Unexpected response code 500 for http://api/presence/check_in

请问有人可以帮我吗?因为我陷入困境,需要帮助或引用来解决我的错误 谢谢

最佳答案

HTTP 代码 500 是内部服务器错误。了解更多 here 。它通常意味着服务器无法处理请求并给出响应。这意味着您的应用程序的代码可能没问题,而服务器在处理当前请求正文时可能会遇到一些问题。我发现您正在请求正文中发送String。我在请求正文中发送 String 时注意到的一件奇怪的事情是,我们还需要检查 String 是否为 null ,最好在字符串末尾也使用 .trim() 方法,这将删除开头和结尾的空格。一些简单的事情,比如不对您尝试插入到服务器数据库中的字段进行转义单引号 ( ' ) 可能会导致这种情况。因此,服务器端字段验证和诸如准备好的语句之类的最佳实践也至关重要。如果您绝对确定您的客户端 [android 应用程序] 没问题,则服务器可能在您所访问的端点处遇到了一些问题。 使用像 POSTMAN 这样的休息客户端测试您的 api或INSOMNIA绝对确保您的服务器和 api 层按预期工作。祝你好运

关于java - 使用 volley 连接到 Android 中的服务器时出现内部服务器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58162143/

相关文章:

java - java中的线程间通信

android - 动态添加ImageView到LinearLayout出错

android - RingtonePreference 未触发 OnPreferenceChangeListener

Android 使用 Volley 发送编码为 Base64 的图像

java - 将xml文件数据存储在DB中

java - RxJava reduce() 在并行化时会不安全吗?

java - JSON-XML 转换器 Java 库?

android - 如何在 .bash_profile 中正确设置 PATH 变量?在 Lion 上使用 adb?

Android Volley JsonRequest

android - 一起使用 Android Handler 和 Volley 时应用程序崩溃