2013-04-20 32 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

相關問題