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中调用,怎么样,是不是很方便呢。
转载于:https://www.cnblogs.com/zhrxidian/p/4105264.html
Android之提交数据到服务端方法简单封装相关推荐
- android post 提交数据
引用:http://www.2cto.com/kf/201112/114551.html Android 实现Post向服务器提交数据 熟悉web编程的都很了解get和post这两种传递表单数据的方法 ...
- Coolite服务端方法调用与Web.Config配置
1.AjaxEvet: //这是一个服务端方法 protected void UpdateTimeStamp(object sender, AjaxEventArgs e) { this.SetTim ...
- ajax提交数据到后台php接收
在网上看了很久,发现数据的利用ajax提交数据到后台其实很简单,但是很多讲解的并不清楚,对于初学者来说,很多真的是看着有点糊涂,拿来直接用,又想去了解怎么回事,其实利用ajax提交数据到后台是非常的简 ...
- php ajax勾选框提交,jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例...
昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来 ...
- jquery复选框组清空选中的值_jQuery选取所有复选框被选中的值并用Ajax异步提交数据...
昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来 ...
- android提交服务器,Android向WEB服务器提交数据
说明: 1.本系列博文是博主在学习传智播客Android培训视频的学习笔记 2.当然博文不只是罗列视频上讲的知识点,通过查阅资料对一些知识点进行了详细的讲解 3.由于是初学,难免有疏漏之处,还请不吝赐 ...
- Android笔记 get方式提交数据到服务器 避免乱码 demo
http://download.csdn.net/detail/u011109881/8042001源代码 根据传智播客张泽华视频54-57写出 文中加粗的是解决乱码问题 A web端 1login. ...
- android post json格式,Android中post请求传递json数据给服务端的实例
在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid","clientType": ...
- android json传输数据到服务器,Android中post请求传递json数据给服务端的实例
在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid", "clientType" ...
最新文章
- 使用Git,显示一个分支中的所有提交,但不显示其他分支中的所有提交
- Linux学习:文件 I/O 函数
- 【今晚7点半】:GVoice 千万在线语音传输的那些事
- C#实现最简单的收银系统
- Thinkphp 验证码、文件上传
- EJB 3.x:生命周期和并发模型(第1部分)
- linux emacs命令,Linux Bash Shell 终端 Terminal Emacs 模式 常用 快捷键 命令
- delphi 调用浏览器内核_HFL:基于混合模糊测试的Linux内核漏洞挖掘
- 计算机组成原理的实验节拍,一种计算机组成原理的实验装置
- 速修复!CISA警告称 Zoho 服务器0day已遭在野利用
- FlexForAndroid:文件读写
- Eclipse运行异常:Could not find the main class. Program will exit.
- ubuntu 查找opencv安装路径_ubuntu 查找opencv安装路径_Ubuntu安装opencv详细步骤
- layui数据表格增加自动换行后,拖动列宽固定列错乱变形
- Mysql 修改字段默认值问题
- ICIP2021:VVC RPR参考结构改进
- 一.c#基础 [Unity_Learn_RPG_1]
- php base64数据与图片的转换
- java基于Springboot+vue的医院体检预约挂号系统 elementui
- 凸度(bulge)是AutoCAD 中独有的概念
热门文章
- VUE项目启动:You may use special comments to disable some warnings
- Linux下安装ntp时间同步服务器
- 百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈
- 彻底理解js中的和||
- 全新的PDO数据库操作类(仅适用Mysql)
- Java基础知识编写一个HelloWorld案例
- MyBatis学习 之 七、mybatis各种数据库的批量修改
- ADO.NET Entity Framework如何:使用实体数据模型向导(实体框架)
- 046、JVM实战总结:动手实验:自己动手模拟出对象进入老年代的场景体验一下(下)
- 在java语言中_类间的继承关系是_【填空题】在Java程序里类之间的继承关系只能是________。...