使用Google Volley发送请求参数

时间:2017-06-18 08:45:54

标签: android spring-mvc android-volley

我正在尝试使用我的Android手机中的Volley向在Spring上编写的HTTP服务器发出GET请求。

我做了一个自定义请求,扩展Request并覆盖其getParams()元素:

@Override
protected Map<String, String> getParams() throws AuthFailureError {
        Map<String, String> parameters = new HashMap<>();
        parameters.put("email", "xxxx@xxx.com");
        parameters.put("password", "xxxx");    
        return parameters;
}

我正以这种方式提出要求:

GsonRequest = new GsonRequest<String>(Request.Method.GET, "http://192.168.43.15:10000/login",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        ....
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        ......
                    }
        });
Log.i(TAG, new String(request.getBody()));
requestQueue.add(request);

日志显示请求正在使用此参数:

电子邮件= XXXX%40xxx.com&安培;密码= XXXX&安培;

但是有一个错误:

  

http://192.168.43.15:10000/login

的意外回复代码400

看起来似乎没有发送请求参数。

这是我的服务器代码:

@RequestMapping(path = "/login", method = RequestMethod.GET)
public ResponseEntity<String> login(@RequestParam(name = "email") String email,
                                    @RequestParam(name = "password") String password) {
  User user = repository.findByEmailAndPassword(email, password);
    if (user != null) {
        return new ResponseEntity("Found", HttpStatus.OK);
    }

    return new ResponseEntity<>("Not found", HttpStatus.OK);
}

我认为Android设备上的代码有问题,因为当我从浏览器发出请求时,一切正常。

有人可以告诉我问题在哪里吗?

1 个答案:

答案 0 :(得分:0)

经过一番观察,我发现这篇文章解释了为什么不发送参数。

Volley - how to send DELETE request parameters?