在Android中使用Volley库在GET方法中传递参数

问题描述 投票:0回答:1

我使用以下 url 进行 GET 请求:

String url = "http://10.0.2.2:8080/api/v1/user/login?username=" + username + "&password=" + password;

看起来用户可能会选择用户名/密码,从而导致 url 在参数名称和值方面具有不同的含义。

例如:我注意到如果

username = "&"
password = 1
那么登录请求返回 false。

我尝试使用以下代码传递参数:

        @Override
        public Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();

            params.put("username", username);
            params.put("password", password);

            return params;
        }

但是此方法不适用于 GET 请求。

有没有办法将变量封装在url字符串中?或者我应该将服务器中的方法更改为POST方法?

android spring-boot android-volley
1个回答
0
投票

切勿将登录参数放入 GET 请求中。 始终使用 POST。 原因是密码位于带有 GET 的 URL 中,使其对中间的任何路由器、日志中的任何路由器公开,对嗅探网络的任何数据包都可见,等等。这也避免了您提到的问题,因为 POST 值不没有相同的编码问题。

© www.soinside.com 2019 - 2024. All rights reserved.