Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android之提交數據到服務端方法簡單封裝

Android之提交數據到服務端方法簡單封裝

編輯:關於Android編程

在Android應用中,除了單機版的應用,其余的應用免不了需要頻繁地與服務端進行數據交互,如果每一種方法都獨立寫一段代碼,那會造成代碼大量重復,冗余,這不是我們所希望的,所以我們可以對其進行一些封裝,這樣不但可以提高代碼質量,最重要的是我們自己用起來也爽啊。   首先,我們先建立個webservice文件夾,再在裡面新建3各類:HttpUtils.java   ;Webservice.java  ;WebserviceHelp.java。       先介紹WebserviceHelp,這個類裡面不含任何方法代碼,只包含一些參數。   復制代碼  1 public class WebserviceHelp   2 {  3        /**IP地址或域名*/  4       protected static String IP = "";  5       /**Webservice提供地址 */  6       protected static String URL = IP +"";  7   8        9       /*************下面是方法名*************/ 10        11       /**用戶登錄**/ 12       protected static final String Login ="login";  13     14 } 復制代碼 接下來我們看看HttpUtils,這個類作用是實現參數的提交,我這裡就只列出了post提交方法。     復制代碼  1 package sedion.zhr.webservice;  2   3 import java.util.List;  4   5 import org.apache.http.HttpEntity;  6 import org.apache.http.HttpResponse;  7 import org.apache.http.NameValuePair;  8 import org.apache.http.client.HttpClient;  9 import org.apache.http.client.entity.UrlEncodedFormEntity; 10 import org.apache.http.client.methods.HttpPost; 11 import org.apache.http.impl.client.DefaultHttpClient; 12 import org.apache.http.params.CoreConnectionPNames; 13 import org.apache.http.params.HttpParams; 14 import org.apache.http.util.EntityUtils; 15 import org.json.JSONObject; 16  17 import android.util.Log; 18  19  20 public class HttpUtils  21 {   22     /**作為標記在*/ 23     private static final String TAG = "HttpUtils處理類"; 24     /**用戶識別*/ 25      public static final String User_Agent="";      26  27       28       29      private static JSONObject postrequest(String url,List<NameValuePair> params)  30      { 31     //在這裡可以進行一些處理,如添加時間戳,對參數進行排序等等 32          33         try  34         { 35             //建立JSONObject對象 36              JSONObject object=null; 37              //建立HttpClient對象 38              HttpClient httpClient=new DefaultHttpClient(); 39              //設置請求路徑         40              HttpPost post=new HttpPost(url);   41              //設置請求參數 42              post.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));     43              //設置用戶識別 44              post.addHeader("User-Agent", User_Agent); 45              //建立HttpParams對象 46              HttpParams httpParams=post.getParams(); 47              //設置讀取超時 48              httpParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,10000); 49              //設置請求超時 50              httpParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000); 51              //發送請求獲得回饋 52              HttpResponse httpResponse=httpClient.execute(post); 53              //取得反饋信息 54              HttpEntity httpEntity=httpResponse.getEntity(); 55              //如果httpEntity不為空 56              if(httpEntity!=null ) 57              { 58                  String result=EntityUtils.toString(httpEntity); 59                  object=new JSONObject(result); 60                   61                  Log.i(TAG, "post請求成功:"+ result); 62  63                  return object; 64              } 65              else     66              { 67                  Log.e(TAG, "post請求失敗"); 68                  return null; 69              } 70         } 71         catch (Exception e)  72         { 73          74             Log.i(TAG,e.toString()); 75             return null; 76              77         } 78      79      } 80           81      /** 82      * post方法傳參 83      * @param url         ip路徑 84      * @param method      方法名 85      * @param params      參數 87      * @return 88      */ 89     public static JSONObject post(String url,String method,List<NameValuePair> params) throws Exception  90     {         91          92             return postrequest(url+method, params);         93     } 94   95 } 復制代碼 最後就是Webservice類了,這裡寫所需功能了,這個類要繼承WebserviceHelp類,這裡以登錄為例子。   復制代碼  1 public class Webservice extends WebserviceHelp  2 {  3        4     private static final String  Webservice_Tag="網絡服務";  5       6         /***  7      * 用戶登陸       8      * @param userPhone 手機號  9      * @param password 密碼 10      * @return 11      */ 12     public static int login(String userPhone,String password) 13     { 14         JSONObject object; 15          16         try      17         { 18             List<NameValuePair> params = new ArrayList<NameValuePair>(); 19              20             params.add(new BasicNameValuePair("userPhone",userPhone)); 21             params.add(new BasicNameValuePair("password",password)); 22              23             object = HttpUtils.post(URL, Login, params); 24          25                 26             return object.optInt("results"); 27              28         } 29         catch(Exception e) 30         { 31             Log.e(Webservice_Tag+Login, e.toString()); 32             return -1; 33         } 34          35     } 36 } 復制代碼 以上方法便已封裝好了,接下來就是activity中調用了,別的代碼我就不給出了,這裡就只是一個異步處理類。   復制代碼  1  private class LoginAsyncTask extends AsyncTask<String, Integer, Integer>  2      {  3   4         @Override  5         protected Integer doInBackground(String... str)  6         {  7             if(SystemUtil.isNetworkConnected(LoginActivity.this))  8             {  9                 int result = 0; 10                 try  11                 { 12                     //這裡str[0],str[1]分別為獲得的手機號,密碼 13                     result = Webservice.login(str[0], str[1]); 14                      15  16                 } catch (Exception e)  17                 { 18                     Log.e(LOG_TAG, ""+result); 19                     e.printStackTrace(); 20                 } 21                 return result; 22             } 23             else 24             { 25                 return NO_NET; 26             } 27         } 28          29         @Override 30         protected void onPostExecute(Integer result) 31         { 32              33              34              35             switch (result) 36             { 37             case NO_NET: 38                 ToastUtils.show(LoginActivity.this,R.string.no_net); 39                 break; 40             case SYSTEM_ERROR: 41                 ToastUtils.show(LoginActivity.this, R.string.system_error); 42                 break; 43             case FAIL: 44                 ToastUtils.show(LoginActivity.this, R.string.login_fail); 45                 break; 46             case SUCCESS: 47   48                 Intent intent = new Intent(LoginActivity.this,MainActivity.class); 49                 startActivity(intent); 50                 break; 51             default: 52                 break; 53             } 54         } 復制代碼 接下來別還需要別的功能方法就可以直接寫在Webservice類裡了,然後直接在activity中調用,怎麼樣,是不是很方便呢。    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved