如何将Android应用程序的发布请求发送到Rails应用程序



我在从Android应用程序(使用spring for android)向我的Rails应用程序发送发布请求

有问题

我有遵循导轨控制器:

  # POST /users
  # POST /users.json
  def create
@user = User.new(user_params)
respond_to do |format|
  if @user.save
    format.html { redirect_to @user, notice: 'User was successfully created.' }
    format.json { render action: 'show', status: :created, location: @user }
  else
    format.html { render action: 'new' }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end
  end
# Never trust parameters from the scary internet, only allow the white list through.
def user_params
  params.require(:user).permit(:name, :email)
end

我正在发送发布请求(使用spring for android):

        RestTemplate restTemplatePost = new RestTemplate();
        restTemplatePost.getMessageConverters().add(new StringHttpMessageConverter());

        UserDto user = new UserDto();
        user.name = "testName";
        user.email = "test@fromandroid.com";
        Gson gson = new Gson();
        String request = gson.toJson(user);
        restTemplatePost.postForObject(createUserUrl, request, String.class);
        } catch(RestClientException e) {
            Log.e("POST",e.getLocalizedMessage());
        }

字符串请求的值是{" email":" test@fromandroid.com"," name":" testName"}

和createUserurl的值: http://10.0.0.2:3000/users

但是,我仍然会收到以下错误:

> W/RestTemplate(3299): POST request for "http://10.0.0.2:3000/users"
> resulted in 400 (Bad Request); invoking error handler

我可以发送GET请求,但是帖子不起作用。我究竟做错了什么?我使用卷曲来获取更好的错误消息,然后返回:

param not found: user 

因此,问题可能与REST API接受的必需用户和可选的名称和电子邮件参数有关,但是我应该如何在JSON中格式化用户才能工作?

我非常感谢您的帮助!

请确保您的控制器配置接受邮政方法,可能只是收到。

Railscontroller

railsrouting

您可以使用RESTCLIENT(Firefox或Chrome的插件)测试您的API。

休息客户-Firefox

休息客户-Chrome

您必须遵循post的一些问题。

  1. 您需要发布类似:

    的数据

    {"user_params" : {"email":"test@fromandroid.com","name":"testName"}}

    创建用户(根据您的控制器)。

  2. 发布数据添加请求标头。当您发送json数据时,标题将为Content-Type: application/json

我也建议您使用firefox插件被命名为" restclient"来模拟此情况。

谢谢。

相关内容

最新更新