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