如何在RESTful Web服务中将参数传递给GET方法

时间:2014-04-17 12:52:33

标签: java android web-services rest

我必须将UserNamepassword作为参数传递给GET方法进行验证。在处理之后我需要获得响应。所以如何将值传递给RESTful webservice GET方法?

5 个答案:

答案 0 :(得分:2)

参数通常作为URL参数在GET请求中传递。在不知道你尝试过什么或者你在哪里挣扎的情况下,我真的无法提供更多的答案。

- UPDATE -

试试这个:http://www.mkyong.com/webservices/jax-rs/jax-rs-queryparam-example/

答案 1 :(得分:0)

要在HTTP GET中传递参数,您应该使用?分隔符。如

https://mywebsite.com/user/login?username=bob&password=123
https://mywebsite.com/user/login?paramname1=value1&paramname2=value2

确保始终将https与任何敏感数据一起使用。您可能还需要转义/编码用户名和密码以允许扩展ASCII。如果您需要支持UNICODE,您应该考虑使用POST请求。

答案 2 :(得分:0)

您可以执行以下登录验证,

// Create a new HttpClient and Post Header
            String downloadedString= null;

            HttpClient httpclient = new DefaultHttpClient();


            //for registerhttps://te
            HttpPost httppost = new HttpPost("YOUR LOGIN URL");
            //add data
            try{
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                nameValuePairs.add(new BasicNameValuePair("username", UserName_Edit.getText().toString()));
                nameValuePairs.add(new BasicNameValuePair("password", userPassword_Edit.getText().toString()));

                //add data
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                // Execute HTTP Post Request
                HttpResponse response = httpclient.execute(httppost);

                InputStream in = response.getEntity().getContent();
                StringBuilder stringbuilder = new StringBuilder();
                BufferedReader bfrd = new BufferedReader(new InputStreamReader(in),1024);
                String line;
                while((line = bfrd.readLine()) != null)
                    stringbuilder.append(line);

                downloadedString = stringbuilder.toString();

            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("downloadedString:in login:::"+downloadedString);

使用AsyncTask进行身份验证,并在doInBackground()

中编写上述方法

修改

您也可以按照以下教程

http://sarangasl.blogspot.in/2011/06/android-login-screen-using-httpclient.html

http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

希望它有所帮助。

答案 3 :(得分:0)

我认为,如果你想用用户名和密码做一些事情,你应该使用POST方法。因为当你使用GET方法时,密码将在URI上可见,

https://samplesite.com/page/login?username=John&password=123
https://sampleste.com/page/login?name1=value1&name2=value2

相反,您可以使用POST方法发送用户名和密码值,在这种情况下,URI将在下面

https://samplesite.com/page/login

值将以

的形式发送
POST /page/login.asp HTTP/1.1
Host: samplesite.com
name1=value1&name2=value2

对于与服务器进行安全交易的POST方法,你获得了以下优势。

  • 它从未缓存
  • 请求将保留在浏览器历史记录中
  • 请求无法加入书签
  • 请求对数据长度没有限制

答案 4 :(得分:0)

您好,您可以在RESTful中将参数传递给GET方法,如:

 http://yoururl/<arg1>/<arg2>

例如

 http://yoururl/abc/123