【问题标题】:HTTPS request using Android Volley使用 Android Volley 的 HTTPS 请求
【发布时间】:2024-04-19 22:35:01
【问题描述】:

我正在尝试通过 POST 与 volley 发出 HTTPS 请求,但它不起作用。该请求将我带到 onErrorResponse 但没有显示错误是什么。我用 Postman 测试过,效果很好。 我留下了部分代码。

    Map<String, String> params = new HashMap<String, String>();

    params.put(PARAM_HASH_TOKEN, HASH_TOKEN);
    params.put(PARAM_USUARIO, id);
    params.put(PARAM_PASSWORD, password);

    JSONObject jsonBody = new JSONObject(params);
    Log.e("POST",jsonBody.toString());

    JsonObjectRequest mJsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URL_API, jsonBody, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            if (response != null) {
                F_PARSEAR_JSON_RESPUESTA(response);
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            String msg = (error.getMessage() == null) ? "Ha ocurrido un error, intentelo de nuevo." : error.getMessage();
            Log.e("ERROR",URL_API);
            Log.e("ERROR",msg);               
            _loginButton.setEnabled(true);
        }
    });
    ApplicationLoader.getInstance().addToRequestQueue(mJsonObjectRequest);

【问题讨论】:

  • 不显示错误是什么意思?您是否在调试器中运行并验证它是否为空?
  • @sam_c 没错,我正在使用调试器,它没有显示错误。

标签: android ssl https android-volley


【解决方案1】:

您可以检查客户端和服务器中的内容类型吗?它们的价值相似。

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
            return headers;
        }
        @Override
        public String getBodyContentType()
        {
            return "application/json";
        }

希望对你有帮助!

【讨论】:

  • 不起作用=(,认为ssl证书不可信。
  • 我也遇到过类似的错误,你试试其他的Content type吧