Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Restful Spring中的后参数不工作_Java_Android_Spring_Rest_Spring Mvc - Fatal编程技术网

Java Restful Spring中的后参数不工作

Java Restful Spring中的后参数不工作,java,android,spring,rest,spring-mvc,Java,Android,Spring,Rest,Spring Mvc,我有一个最小的基于Spring的Restful服务器,它使用以下方法 @RequestMapping("/regUser") public @ResponseBody String addUser( @RequestParam(value="name", required=true) String username, @RequestParam(value="email", requi

我有一个最小的基于Spring的Restful服务器,它使用以下方法

@RequestMapping("/regUser")
public @ResponseBody String  addUser(   @RequestParam(value="name", required=true)          String username,
                                            @RequestParam(value="email", required=true)         String email,
                                            @RequestParam(value="newsletter", required=true)    String newsletter){

    User newUser = new User();
    newUser.setEmail(email);
    newUser.setUsername(username);
    newUser.setReceiveNewsletter(true);;

    System.out.println("+++++++++++++++");
    System.out.println("USER: " + username + " | email: " + email + "  | newsletter: " + newsletter);

    System.out.println("+++++++++++++++");
    userRepo.save(newUser);

    return "true";

}
当我在浏览器中打开链接并在URL中使用GET提供所需的参数时,一切都很正常。因此,我假设问题将出现在下面的Android部分

我想从我的Android设备调用上面的方法。用户必须在三个EditText中输入所需的信息,并按下按钮将所有内容发送到Restful服务器

    @Override
    protected UserWrapper doInBackground(String... params) {
        try{
            final String url = params[0];
            RestTemplate tmpl = new RestTemplate();
            tmpl.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
            UserWrapper greet = tmpl.getForObject(url, UserWrapper.class);
            for(User usr : greet.getUsers()){
                Log.d("User", "Post - Name: " + String.valueOf(usr.getUsername()));
                Log.d("User", "Post - eMail: " + String.valueOf(usr.getEmail()));
            }
            return greet;
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return null;
    }
这是我将所有内容发送到服务器的代码。我在AsyncTask中这样做是因为如果服务器需要更长的时间,就不会阻塞Android中的主UI线程

那么,发生了什么? 首先,我得到的信息是:

错误,所需的字段名不存在

如果我将表单required=true切换为required=false,则我得到的短消息为true,服务器报告以下短消息:

+++++++++++++++
USER: null | email: null  | newsletter: null
+++++++++++++++
如何使用POST将所需参数发送到服务器


感谢你们所有人的帮助

如果您创建一个参数映射,然后调用restfull服务,该怎么办

Map<String, String> params = new HashMap<String, String>();
//add params
params.put("name", "the name");
params.put("email", "the email");
params.put("newsletter", "the newsletter");
//call service method

String result = tmpl.getForObject(url, String.class, params);

根据这些建议,我找到了另一个教程,它正是我想做的


使用本教程,一切都按照我希望的方式进行

您发送的是JSON而不是参数…我如何更改它?您不能使用当前设置。不要映射到JSON。或者修复服务器,使其能够接收JSON而不是参数。好的。谢谢,这至少是解决这个问题的一种新方法。…@M.Deinum谢谢你的建议帮助我解决了这个问题地图没什么区别。同样的行为,同样的问题。