Android之提交数据到服务端方法简单封装
在Android应用中,除了单机版的应用,其余的应用免不了需要频繁地与服务端进行数据交互,如果每一种方法都独立写一段代码,那会造成代码大量重复,冗余,这不是我们所希望的,所以我们可以对其进行一些封装,这样不但可以提高代码质量,最重要的是我们自己用起来也爽啊。
首先,我们先建立个webservice文件夹,再在里面新建3各类:HttpUtils.java ;Webservice.java ;WebserviceHelp.java。

先介绍WebserviceHelp,这个类里面不含任何方法代码,只包含一些参数。
public class WebserviceHelp
{
/**IP地址或域名*/
protected static String IP = "";
/**Webservice提供地址 */
protected static String URL = IP +""; /*************下面是方法名*************/ /**用户登录**/
protected static final String Login ="login"; }
接下来我们看看HttpUtils,这个类作用是实现参数的提交,我这里就只列出了post提交方法。
package sedion.zhr.webservice; import java.util.List; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject; import android.util.Log; public class HttpUtils
{
/**作为标记在*/
private static final String TAG = "HttpUtils处理类";
/**用户识别*/
public static final String User_Agent=""; private static JSONObject postrequest(String url,List<NameValuePair> params)
{
//在这里可以进行一些处理,如添加时间戳,对参数进行排序等等 try
{
//建立JSONObject对象
JSONObject object=null;
//建立HttpClient对象
HttpClient httpClient=new DefaultHttpClient();
//设置请求路径
HttpPost post=new HttpPost(url);
//设置请求参数
post.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));
//设置用户识别
post.addHeader("User-Agent", User_Agent);
//建立HttpParams对象
HttpParams httpParams=post.getParams();
//设置读取超时
httpParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,10000);
//设置请求超时
httpParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
//发送请求获得回馈
HttpResponse httpResponse=httpClient.execute(post);
//取得反馈信息
HttpEntity httpEntity=httpResponse.getEntity();
//如果httpEntity不为空
if(httpEntity!=null )
{
String result=EntityUtils.toString(httpEntity);
object=new JSONObject(result); Log.i(TAG, "post请求成功:"+ result); return object;
}
else
{
Log.e(TAG, "post请求失败");
return null;
}
}
catch (Exception e)
{ Log.i(TAG,e.toString());
return null; } } /**
* post方法传参
* @param url ip路径
* @param method 方法名
* @param params 参数
* @return
*/
public static JSONObject post(String url,String method,List<NameValuePair> params) throws Exception
{ return postrequest(url+method, params);
} }
最后就是Webservice类了,这里写所需功能了,这个类要继承WebserviceHelp类,这里以登录为例子。
public class Webservice extends WebserviceHelp
{ private static final String Webservice_Tag="网络服务"; /***
* 用户登陆
* @param userPhone 手机号
* @param password 密码
* @return
*/
public static int login(String userPhone,String password)
{
JSONObject object; try
{
List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("userPhone",userPhone));
params.add(new BasicNameValuePair("password",password)); object = HttpUtils.post(URL, Login, params); return object.optInt("results"); }
catch(Exception e)
{
Log.e(Webservice_Tag+Login, e.toString());
return -1;
} }
}
以上方法便已封装好了,接下来就是activity中调用了,别的代码我就不给出了,这里就只是一个异步处理类。
private class LoginAsyncTask extends AsyncTask<String, Integer, Integer>
{ @Override
protected Integer doInBackground(String... str)
{
if(SystemUtil.isNetworkConnected(LoginActivity.this))
{
int result = 0;
try
{
//这里str[0],str[1]分别为获得的手机号,密码
result = Webservice.login(str[0], str[1]); } catch (Exception e)
{
Log.e(LOG_TAG, ""+result);
e.printStackTrace();
}
return result;
}
else
{
return NO_NET;
}
} @Override
protected void onPostExecute(Integer result)
{ switch (result)
{
case NO_NET:
ToastUtils.show(LoginActivity.this,R.string.no_net);
break;
case SYSTEM_ERROR:
ToastUtils.show(LoginActivity.this, R.string.system_error);
break;
case FAIL:
ToastUtils.show(LoginActivity.this, R.string.login_fail);
break;
case SUCCESS: Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
break;
default:
break;
}
}
接下来别还需要别的功能方法就可以直接写在Webservice类里了,然后直接在activity中调用,怎么样,是不是很方便呢。
Android之提交数据到服务端方法简单封装的更多相关文章
- signalR客户端调用服务端方法失败
现象: 在VS中修改集线器代码后,重新生成解决方案,客户端js调用服务端方法提示undefined. 检查后台代码未发现错误. 检查js代码未发现错误(方法名称符合小驼峰规范). 解决方法: 先清理解 ...
- ajax post 提交数据到服务端时中文乱码解决方法
get 方式提交数据到服务端不会乱码,但对数据量有限制;post 可以提交大数据量,但中文会发生乱码,解决方法: 在JS上用使用 encodeURIComponent 对字符编码处理: student ...
- 转载 ----HTML5 ---js实现json方式提交数据到服务端
json提交给服务器我们在提交之前需要通过js的相关函数来把数据转换成json格式的数据再进行post或get了,下面来看看. 大概需求就是前端要把数据组装成json,传给后端.首先,在客户端,通 ...
- JQuery以JSON方式提交数据到服务端
JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多.以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式.地址.数据类型,以及回调方法等.下面 ...
- Android 网络提交数据(使用Asynchronous Http Client)
项目主页及简单使用方法http://loopj.com/android-async-http/ 页面布局就不复制了,把主要的Activity记录下来,供自己以后使用: package com.exam ...
- json提交数据到服务端
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Courier New"; color: #393939; backgr ...
- Http协议:客户端提交数据给服务端和从服务端获得数据,像WebView也是向百度的服务端发出一条Http请求,服务端返回HTML页面,客户端(浏览器)解析后展示出页面
提交数据和获得数据的方式有很多,这里介绍一种,使用HttpURLConnection来向服务器提交数据或者获得数据. 获得数据: //传入网址,获得请求网页数据(XML文件数据或JSON文件数据) p ...
- android 读取串口数据的服务
2016-09-1813:10:03 继承Service,定义抽象方法onDataReceived,子类通过实现抽象方法获取接收到数据的回调. package com.zrsoft.liftad.se ...
- Android(java)学习笔记209:采用get请求提交数据到服务器(qq登录案例)
1.GET请求: 组拼url的路径,把提交的数据拼装url的后面,提交给服务器. 缺点:(1)安全性(Android下提交数据组拼隐藏在代码中,不存在安全问题) (2)长度有限不能超过4K(h ...
随机推荐
- android.graphics.Matrix
Matrix类包含了一个3x3的矩阵用来改变坐标,它没有一个构造器来初始化它里边的内容,所以创建实例后需要调用reset()方法生成一个标准matrix,或者调用set..一类的函数,比如setTra ...
- jira 无法停止启动解决方案
Diagnosis To assess whether the service is still running, run ps -A | grep jira. Resolution To kill ...
- 走过而立之年的Coder
当年,关于“程序员三十”的话题,一直充斥在耳边——大抵就是:Coder过了三十就完犊子了.干不下去了.对于新人来讲,这个话题的热度,甚至超过了语言之争的月经贴. 那些话题总结一下,大抵就是如下几种: ...
- HDOJ(HDU) 2524 矩形A + B(推导公式、)
Problem Description 给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形,下图为高为2,宽为4的网格. Input 第一行输入一个t, 表示有t组数据,然后每行输入n,m ...
- 排序之直接插入排序(Straight Insertion Sort)
一.直接插入排序(Straight Insertion Sort) 排序的过程如下:给定无需序列:(3,6,9,7,1,8,2,4) ① 3,6,9,7,1,8,2,4 (将6插入到有序序列3中) ② ...
- SWMM代码移植到64位平台
在32位平台上运行SWMM模型,当节点数量到达60万以上的时候,模型运行占用内存接近1.85G的时候就会因为内存不够而无法计算.这种情况还是单独运行SWMM.exe的时候出现,如果采用SWMM.DLL ...
- CHS与LBA之间转换程序
原理及介绍来自维基百科 http://zh.wikipedia.org/wiki/%E9%82%8F%E8%BC%AF%E5%8D%80%E5%A1%8A%E4%BD%8D%E5%9D%80 个人用的 ...
- Android常用网址[转]
转自:http://my.oschina.net/u/593225/blog/404423 1.AndroidDevTools URL: http://www.androiddevtools.cn/ ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(35)-文章发布系统②-构建项目
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(35)-文章发布系统②-构建项目 注:阅读本文,需要阅读本系列的之前文章 代码生成器下载地址(文章开头处) ...
- 文件上传~Uploadify上传控件~续(多文件上传)
对于Uploadify文件上传之前已经讲过一次(文件上传~Uploadify上传控件),只不过没有涉及到多文件的上传,这回主要说一下多个文件的上传,首先,我们要清楚一个概念,多文件上传前端Upload ...