Android HTTPGet到Rails REST登录

bot*_*bot 1 java rest android ruby-on-rails ruby-on-rails-3

我有一个需要电子邮件和密码的登录信息.

如果我从Postman休息客户端点击它:

www.site.com/login.json?session[email]=bob@gmail.com&session[password]=password
Run Code Online (Sandbox Code Playgroud)

服务器(Rails)会很好地读取它,如下所示:

{"session"=>{"email"=>"bob@gmail.com", "password"=>"password"}, "action"=>"create", "controller"=>"sessions", "format"=>"json"}
Run Code Online (Sandbox Code Playgroud)

但是,如果我从Android发送与HTTPGet相同的东西,像这样:

            HttpClient httpclient = new DefaultHttpClient();

            //get the parameters
            String email = params[0];
            String password = params[1];

            String url = "http://www.site.com/login.json?session[email]=" + email + "?session[password]=" + password;

            HttpGet httpget = new HttpGet(url);

            httpget.setHeader("Accept", "application/json");
            httpget.setHeader("Content-type", "application/json");
response = httpclient.execute(httpget);
Run Code Online (Sandbox Code Playgroud)

服务器无法识别参数,我最终得到一个空的json对象,如下所示:

{"session"=>{}, "action"=>"create", "controller"=>"sessions", "format"=>"json"}
Run Code Online (Sandbox Code Playgroud)

有人知道如何在Android中的这个HTTPGet调用中形成参数,以便在其余的客户端调用中工作吗?谢谢!

Ily*_*kov 6

看来你的URL中有拼写错误,并且params搞砸了.这一行:

String url = "http://www.site.com/login.json?session[email]=" + email + "?session[password]=" + password;
Run Code Online (Sandbox Code Playgroud)

应该

String url = "http://www.site.com/login.json?session[email]=" + email + "&session[password]=" + password;
Run Code Online (Sandbox Code Playgroud)

请注意,我已替换?session[password]=为&session[password]=.