在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中调用,怎么样,是不是很方便呢。

转载于:https://www.cnblogs.com/zhrxidian/p/4105264.html

Android之提交数据到服务端方法简单封装相关推荐

  1. android post 提交数据

    引用:http://www.2cto.com/kf/201112/114551.html Android 实现Post向服务器提交数据 熟悉web编程的都很了解get和post这两种传递表单数据的方法 ...

  2. Coolite服务端方法调用与Web.Config配置

    1.AjaxEvet: //这是一个服务端方法 protected void UpdateTimeStamp(object sender, AjaxEventArgs e) { this.SetTim ...

  3. ajax提交数据到后台php接收

    在网上看了很久,发现数据的利用ajax提交数据到后台其实很简单,但是很多讲解的并不清楚,对于初学者来说,很多真的是看着有点糊涂,拿来直接用,又想去了解怎么回事,其实利用ajax提交数据到后台是非常的简 ...

  4. php ajax勾选框提交,jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例...

    昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来 ...

  5. jquery复选框组清空选中的值_jQuery选取所有复选框被选中的值并用Ajax异步提交数据...

    昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来 ...

  6. android提交服务器,Android向WEB服务器提交数据

    说明: 1.本系列博文是博主在学习传智播客Android培训视频的学习笔记 2.当然博文不只是罗列视频上讲的知识点,通过查阅资料对一些知识点进行了详细的讲解 3.由于是初学,难免有疏漏之处,还请不吝赐 ...

  7. Android笔记 get方式提交数据到服务器 避免乱码 demo

    http://download.csdn.net/detail/u011109881/8042001源代码 根据传智播客张泽华视频54-57写出 文中加粗的是解决乱码问题 A web端 1login. ...

  8. android post json格式,Android中post请求传递json数据给服务端的实例

    在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid","clientType": ...

  9. android json传输数据到服务器,Android中post请求传递json数据给服务端的实例

    在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid", "clientType" ...

最新文章

  1. 使用Git,显示一个分支中的所有提交,但不显示其他分支中的所有提交
  2. Linux学习:文件 I/O 函数
  3. 【今晚7点半】:GVoice 千万在线语音传输的那些事
  4. C#实现最简单的收银系统
  5. Thinkphp 验证码、文件上传
  6. EJB 3.x:生命周期和并发模型(第1部分)
  7. linux emacs命令,Linux Bash Shell 终端 Terminal Emacs 模式 常用 快捷键 命令
  8. delphi 调用浏览器内核_HFL:基于混合模糊测试的Linux内核漏洞挖掘
  9. 计算机组成原理的实验节拍,一种计算机组成原理的实验装置
  10. 速修复!CISA警告称 Zoho 服务器0day已遭在野利用
  11. FlexForAndroid:文件读写
  12. Eclipse运行异常:Could not find the main class. Program will exit.
  13. ubuntu 查找opencv安装路径_ubuntu 查找opencv安装路径_Ubuntu安装opencv详细步骤
  14. layui数据表格增加自动换行后,拖动列宽固定列错乱变形
  15. Mysql 修改字段默认值问题
  16. ICIP2021:VVC RPR参考结构改进
  17. 一.c#基础 [Unity_Learn_RPG_1]
  18. php base64数据与图片的转换
  19. java基于Springboot+vue的医院体检预约挂号系统 elementui
  20. 凸度(bulge)是AutoCAD 中独有的概念

热门文章

  1. VUE项目启动:You may use special comments to disable some warnings
  2. Linux下安装ntp时间同步服务器
  3. 百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈
  4. 彻底理解js中的和||
  5. 全新的PDO数据库操作类(仅适用Mysql)
  6. Java基础知识编写一个HelloWorld案例
  7. MyBatis学习 之 七、mybatis各种数据库的批量修改
  8. ADO.NET Entity Framework如何:使用实体数据模型向导(实体框架)
  9. 046、JVM实战总结:动手实验:自己动手模拟出对象进入老年代的场景体验一下(下)
  10. 在java语言中_类间的继承关系是_【填空题】在Java程序里类之间的继承关系只能是________。...