gpt4 book ai didi

android - 如何将 POST 请求从 Android 应用程序发送到 Rails 应用程序?

转载 作者:行者123 更新时间:2023-11-29 00:23:37 24 4
gpt4 key购买 nike

我在从 Android 应用程序(使用 Spring for Android)向我的 Rails 应用程序发送 POST 请求时遇到问题

我有以下 Rails Controller :

  # 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

我正在发送 POST 请求(使用 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 请求,但 POST 不起作用。我究竟做错了什么?我使用 CURL 来获得更好的错误消息,它返回:

param not found: user 

所以问题可能出在 REST API 接受的必需用户和可选名称以及电子邮件参数上,但是我应该如何在 json 中格式化用户才能使其正常工作?

非常感谢您的帮助!

最佳答案

请确保您的 Controller 配置接受 POST 方法,可能只是接收 GET。

RailsController

RailsRouting

并且您可以使用 RestClient(Firefox 或 Chrome 的插件)来测试您的 api。

Rest Client - Firefox

Rest Client - Chrome

关于android - 如何将 POST 请求从 Android 应用程序发送到 Rails 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21398829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com