2013-04-20 23 views
1

如何为我们的网站创建休息api,我想用我的android应用程序使用休息api连接服务器。如何连接这些休息api与我的android应用程序,这些背后的方式是什么。如何创建Rest api,以及如何使用android应用程序来使用其余api

+0

有很多教程在互联网上公布。请搜索。我们不是导师。 – 2013-04-20 05:33:26

+0

其实我花了很多的东西,我没有得到适当的,如果你知道请帮助我。@ SankarV – 2013-04-20 05:34:45

回答

1

在这里,你有一个很好的REST API,与基本做HTTP POST和GET:

public class RestClient { 

private ArrayList<NameValuePair> params; 
private ArrayList<NameValuePair> headers; 
private String url; 
private String response; 
private int responseCode; 

public String GetResponse() 
{ 
    return response; 
} 

public int GetResponseCode() 
{ 
    return responseCode; 
} 

public RestClient(String url) 
{ 
    this.url = url; 
    params = new ArrayList<NameValuePair>(); 
    headers = new ArrayList<NameValuePair>(); 
} 

public void AddParam(String name, String value) 
{ 
    params.add(new BasicNameValuePair(name, value)); 
} 

public void AddHeader(String name, String value) 
{ 
    headers.add(new BasicNameValuePair(name, value)); 
} 

public void Execute(RequestType requestType) throws Exception 
{ 
    switch(requestType) 
    { 
     case GET: 
     { 
      String combinedParams = ""; 
      if (!params.isEmpty()) 
      { 
       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); 

      for (NameValuePair h: headers) 
       request.addHeader(h.getName(),h.getValue()); 

      ExecuteRequest(request, url); 
      break; 
     } 
     case POST: 
     { 
      HttpPost request = new HttpPost(url); 

      for (NameValuePair h : headers) 
      { 
       request.addHeader(h.getName(), h.getValue()); 
      } 

      if(!params.isEmpty()){ 
       request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 
      } 

      ExecuteRequest(request, url); 
      break; 
     } 
    } 
} 

public void ExecuteRequest(HttpUriRequest request, String url) 
{ 
    HttpClient client = new DefaultHttpClient(); 
    HttpResponse httpResponse; 
    try 
    { 
     httpResponse = client.execute(request); 
     responseCode = httpResponse.getStatusLine().getStatusCode(); 

     HttpEntity entity = httpResponse.getEntity(); 

     if (entity != null) 
     { 
      InputStream in = entity.getContent(); 
      response = ConvertStreamToString(in); 
      in.close(); 
     } 
    } 
    catch (ClientProtocolException e) { 
     client.getConnectionManager().shutdown(); 
     e.printStackTrace(); 
     } catch (IOException e) { 
     Log.e("REST_CLIENT", "Execute Request: " + e.getMessage()); 
     client.getConnectionManager().shutdown(); 

     e.printStackTrace(); 
    }  
} 

private String ConvertStreamToString(InputStream in) 
{ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try 
    { 
     while ((line = reader.readLine()) != null) { 
     sb.append(line + "\n"); 
    } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     try 
     { 
      in.close(); 
     } 
     catch (IOException e) 
     { 
      Log.e("REST_CLIENT", "ConvertStreamToString: " + e.getMessage()); 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 

}

+0

谢谢老兄,但我是休息的初学者,你可以给我一些链接,我必须开始学习创建REST,@丹尼尔 – 2013-04-20 05:40:46

+0

只是谷歌它,并没有结婚的Android进行搜索时,因为休息来了很多之前比Android – Daniel 2013-04-20 05:43:56

+0

伙计我搜索很多,但我没有得到正确的解决方案,以了解起始水平休息,如果你知道。让我@丹尼尔 – 2013-04-20 05:53:08

相关问题