발리 요청에 문제가 있습니다. JSONObject
param (비밀번호 및 로그인 사용자)과 함께 GET (다른 유사한 POST도) 요청을 보내 사용자와 전체 사용자 데이터를 다시 보냅니다. 내가 mRequestBody
는 JSON
올바른 디버깅하는 동안 볼 수 있지만 내 컨트롤러를받을 수는 없지만 -JSONObjectParameter가있는 Volley GET JsonObjectRequest가 전혀 작동하지 않습니다.
private void processLogin() throws JSONException {
this.user.setLogin(this.loginText.getText().toString());
this.user.setPassword(this.passwordText.getText().toString());
final JSONObject jsonObject = new JSONObject(new Gson().toJson(this.user));
final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, UrlHelper.loginUrl, jsonObject, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
user = new Gson().fromJson(response.toString(), User.class);
if (user.getUserId().equals(getResources().getString(R.string.ERROR))) {
onLoginFailed();
} else {
onLoginSuccess(user);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
};
VolleySingleton.getInstance(this).addToRequestQueue(request);
}
컨트롤러 방법 :
@RequestMapping(value = "/loginTest", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public User someMethod(@RequestBody User user) throws SQLException {
return userService.authenticateUser(user.getLogin(), user.getPassword());
}
주석 @RequestBody
없이 나는 그것을 처리하지만 param
의 사용자가 비어있는, 그래서 나는 null password와 login으로 User를 처리한다. 최근에 내가 한거야 StringRequest
제발, 도와주세요. :)
Okey, 그래서 내 메서드를 POST로 변경하고 StringRequest를 사용하여 getBodyContentType() 및 getBody() 메서드를 구현하고 컨트롤러 메서드를 향상시킵니다. 당신의 도움을 주셔서 감사합니다 :) – agataguli