Java Android应用程序调用中自定义会话控制器中的空rails参数
我试图从一个移动应用程序登录到我的web应用程序,我得到一个服务器错误(500),ruby端的参数为空。我觉得这很奇怪,因为我可以使用相同的过程进行良好注册,即以JSON格式发送数据并在控制器中运行create操作 ruby应用程序在接收JSON和填充参数之间是否缺少一个步骤 这是我们的建议:Java Android应用程序调用中自定义会话控制器中的空rails参数,java,android,ruby-on-rails,ruby,Java,Android,Ruby On Rails,Ruby,我试图从一个移动应用程序登录到我的web应用程序,我得到一个服务器错误(500),ruby端的参数为空。我觉得这很奇怪,因为我可以使用相同的过程进行良好注册,即以JSON格式发送数据并在控制器中运行create操作 ruby应用程序在接收JSON和填充参数之间是否缺少一个步骤 这是我们的建议: def create user = User.find_by_email(params[:app_session][:email].downcase) if user &&
def create
user = User.find_by_email(params[:app_session][:email].downcase)
if user && user.authenticate(params[:app_session][:password])
respond_with do|format|
format.json { render json: user }
end
else
respond_with do|format|
format.json { render json: { :info => "Failed" }}
end
end
end
下面是java代码:(我知道密码是公开的,这将被解决)
编辑:以下是Heroku日志:
Started GET "/app_session" for 62.40.34.218 at 2013-05-20 19:14:01 +0000
Processing by AppSessionController#create as JSON
Parameters: {"app_session"=>{}}
Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 1.0ms)
我已经在Android中实现了一些代码,看起来如下:
HttpPost post = new HttpPost(login_url);
post.setHeader("Content-type", "application/json");
post.addHeader("Accept", "application/json");
JSONObject send_json = new JSONObject();
send_json.put("login", uname);
send_json.put("password", pwd);
JSONObject root = new JSONObject();
root.put("app_session", send_json);
StringEntity se = new StringEntity(root.toString());
Log.i("send_json", send_json.toString());
post.setEntity(se);
HttpResponse response = httpclient.execute(post);
它看起来只是在设置标题方面有所不同。我使用了addHeader(),而您使用了setHeader()。虽然我不是安卓的专家,但上面的代码对我很有用
希望这有帮助 谢谢,我现在就试试。代码段中“root”的值是多少?我已经更新了答案。你愿意发送的是json对象是的,我也是这么想的。不过,这并不令人高兴。ruby端的参数仍然为空。不过,它正在日志中打印JSON。再次感谢。当您发送请求时,您能给我看一下rails服务器日志吗?我编辑了我的原始问题,以包含登录请求中的Heroku日志。它现在正在读取状态代码200,我只是刚刚注意到。
HttpPost post = new HttpPost(login_url);
post.setHeader("Content-type", "application/json");
post.addHeader("Accept", "application/json");
JSONObject send_json = new JSONObject();
send_json.put("login", uname);
send_json.put("password", pwd);
JSONObject root = new JSONObject();
root.put("app_session", send_json);
StringEntity se = new StringEntity(root.toString());
Log.i("send_json", send_json.toString());
post.setEntity(se);
HttpResponse response = httpclient.execute(post);