Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 Android应用程序调用中自定义会话控制器中的空rails参数_Java_Android_Ruby On Rails_Ruby - Fatal编程技术网

Java Android应用程序调用中自定义会话控制器中的空rails参数

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 &&

我试图从一个移动应用程序登录到我的web应用程序,我得到一个服务器错误(500),ruby端的参数为空。我觉得这很奇怪,因为我可以使用相同的过程进行良好注册,即以JSON格式发送数据并在控制器中运行create操作

ruby应用程序在接收JSON和填充参数之间是否缺少一个步骤

这是我们的建议:

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);