How to call a RESTful web service from Android?

后端 未结 9 1758
生来不讨喜
生来不讨喜 2020-11-27 10:58

I have written a REST web service in Netbean IDE using Jersey Framework and Java.

For every request the user needs to provide a username and a password, I know that

9条回答
  •  死守一世寂寞
    2020-11-27 11:30

    This is an sample restclient class

    public class RestClient
    {
        public enum RequestMethod
        {
            GET,
            POST
        }
        public int responseCode=0;
        public String message;
        public String response;
        public void Execute(RequestMethod method,String url,ArrayList headers,ArrayList params) throws Exception
        {
            switch (method)
            {
                case GET:
                {
                    // add parameters
                    String combinedParams = "";
                    if (params!=null)
                    {
                        combinedParams += "?";
                        for (NameValuePair p : params)
                        {
                            String paramString = p.getName() + "=" + URLEncoder.encode(p.getValue(),"UTF-8");
                            if (combinedParams.length() > 1)
                                combinedParams += "&" + paramString;
                            else
                                combinedParams += paramString;
                        }
                    }
                    HttpGet request = new HttpGet(url + combinedParams);
                    // add headers
                    if (headers!=null)
                    {
                        headers=addCommonHeaderField(headers);
                        for (NameValuePair h : headers)
                            request.addHeader(h.getName(), h.getValue());
                    }
                    executeRequest(request, url);
                    break;
                }
                case POST:
                {
                    HttpPost request = new HttpPost(url);
                    // add headers
                    if (headers!=null)
                    {
                        headers=addCommonHeaderField(headers);
                        for (NameValuePair h : headers)
                            request.addHeader(h.getName(), h.getValue());
                    }
                    if (params!=null)
                        request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
                    executeRequest(request, url);
                    break;
                }
            }
        }
        private ArrayList addCommonHeaderField(ArrayList _header)
        {
            _header.add(new BasicNameValuePair("Content-Type","application/x-www-form-urlencoded"));
            return _header;
        }
        private void executeRequest(HttpUriRequest request, String url)
        {
            HttpClient client = new DefaultHttpClient();
            HttpResponse httpResponse;
            try
            {
                httpResponse = client.execute(request);
                responseCode = httpResponse.getStatusLine().getStatusCode();
                message = httpResponse.getStatusLine().getReasonPhrase();
                HttpEntity entity = httpResponse.getEntity();
    
                if (entity != null)
                {
                    InputStream instream = entity.getContent();
                    response = convertStreamToString(instream);
                    instream.close();
                }
            }
            catch (Exception e)
            { }
        }
    
        private static String convertStreamToString(InputStream is)
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = null;
            try
            {
                while ((line = reader.readLine()) != null)
                {
                    sb.append(line + "\n");
                }
                is.close();
            }
            catch (IOException e)
            { }
            return sb.toString();
        }
    }
    

提交回复
热议问题