基于android-async-http的android服务
- 1:服务器端
/**
* Created by LiuFei on 2016/1/22.
*/
public class HttpService extends Service{- @Override
public IBinder onBind(Intent intent) {
return null;
}- @Override
public int onStartCommand(Intent intent, int flags, int startId) {
loginPostService();
sendHttpServer();
return super.onStartCommand(intent, flags, startId);
}
/**
* http服务
*/
private void loginPostService() {
AsyncHttpServer server = new AsyncHttpServer();
server.post("/login", new HttpServerRequestCallback() {
@Override
public void onRequest(AsyncHttpServerRequest asyncHttpServerRequest, AsyncHttpServerResponse asyncHttpServerResponse) {
Headers headers = asyncHttpServerRequest.getHeaders();
/** 获取头部信息 **/
Log.v("get login headers--", headers.get("name") + ":" + headers.get("password"));
/** 返回信息 **/
asyncHttpServerResponse.send("This is post return string!");
}
});
server.listen(60000);
}- /**
* httpGet服务
*/
private void sendHttpServer(){
AsyncHttpServer server = new AsyncHttpServer();
server.get("/menu", new HttpServerRequestCallback() {
@Override
public void onRequest(AsyncHttpServerRequest asyncHttpServerRequest, AsyncHttpServerResponse asyncHttpServerResponse) {
/** 获取头部信息 **/
Headers headers = asyncHttpServerRequest.getHeaders();
Log.v("get menu headers--",headers.get("name")+":"+headers.get("password"));
/** 返回信息 **/
asyncHttpServerResponse.send("This is http return string");
}
});
server.listen(60001);
}
}- 2:客户端
- public class SetData {
- private static SetData instance ;
- public static SetData getInstance(){
if(instance == null){
instance = new SetData();
}
return instance ;
}- public String login(String name ,String password){
String dataIp="http://192.168.2.189:60000/login";
ArrayList<NameValuePair> listPair = new ArrayList<>();
ArrayList<Header> listHeader = new ArrayList<>();
listHeader.add(new BasicHeader("name",name));
listHeader.add(new BasicHeader("password",password));
return NetHttpData.getInstance().internet(listPair, listHeader, dataIp);
}- public String getMenu(String name ,String password){
String dataIp="http://192.168.2.189:60001/menu";
ArrayList<Header> listHeader = new ArrayList<>();
listHeader.add(new BasicHeader("name",name));
listHeader.add(new BasicHeader("password",password));
return NetHttpData.getInstance().internetGetMenu(listHeader, dataIp);
}
}
- public class NetHttpData {
- private final String ERROR = "error";
private static NetHttpData instance ;- public static NetHttpData getInstance(){
if(instance == null) instance = new NetHttpData();
return instance ;
}- /** HttpPost连接 **/
public String internet(ArrayList<NameValuePair> list,ArrayList<Header> header ,String dataIp){
String result = null;
HttpPost post = new HttpPost(dataIp);
HttpClient client = new DefaultHttpClient();
Log.i("URL-----",dataIp);
for(int i=0 ;i<header.size();i++){
post.addHeader(header.get(i));
Log.v(header.get(i).getName(),header.get(i).getValue());
}- for(int i=0 ;i<list.size();i++){
Log.i(list.get(i).getName()+"------",list.get(i).getValue());
}- try {
post.setEntity(new UrlEncodedFormEntity(list, HTTP.UTF_8));
HttpResponse response = client.execute(post);
if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){
result = GetString(response.getEntity());
Log.v("result is-----",result);
return result ;
}
} catch (IOException e) {
e.printStackTrace();
}
return ERROR ;
}- /** HttpGet连接 **/
public String internetGetMenu(ArrayList<Header> header ,String dataIp){
String result = null;
HttpGet httpGet= new HttpGet(dataIp);
HttpClient client = new DefaultHttpClient();
Log.i("URL-----",dataIp);
for(int i=0 ;i<header.size();i++){
httpGet.addHeader(header.get(i));
Log.v(header.get(i).getName(), header.get(i).getValue());
}
try {
HttpResponse response = client.execute(httpGet);
if(response.getStatusLine().getStatusCode()== HttpStatus.SC_OK){
result = GetString(response.getEntity());
Log.v("result is-----",result);
return result ;
}
} catch (IOException e) {
e.printStackTrace();
}
return ERROR ;
}- private String GetString(HttpEntity entity) {
try {
InputStream input = entity.getContent();
int length = (int) entity.getContentLength();
StringBuffer sb = new StringBuffer(length);
BufferedReader br = new BufferedReader(new InputStreamReader(input), length);
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line);
}
input.close();
br.close();
return sb.toString();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ERROR;
}
}
基于android-async-http的android服务的更多相关文章
- 如何搭建基于C#和 Appium 的 Android自动测试环境
本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使 ...
- 创建Android守护进程(底层服务)【转】
本文转载自:https://blog.csdn.net/myfriend0/article/details/80016739 创建Android守护进程(底层服务) 前言 Android底层服务,即运 ...
- 基于RxJava2+Retrofit2精心打造的Android基础框架
代码地址如下:http://www.demodashi.com/demo/12132.html XSnow 基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络.上传.下载 ...
- 我的Android进阶之旅------>Android基于HTTP协议的多线程断点下载器的实现
一.首先写这篇文章之前,要了解实现该Android多线程断点下载器的几个知识点 1.多线程下载的原理,如下图所示 注意:由于Android移动设备和PC机的处理器还是不能相比,所以开辟的子线程建议不要 ...
- Android中后台的劳动者“服务”
前言 作为四大组件之一的Service,想必不少开发者都是了解的,那具体熟悉吗?是不是对Service中的每个知识点是否了解,它与Activity的关系又是什么样的,我们所理解的后台服务跟Servic ...
- Android四大组件之—— 使用服务进行后台操作
什么是服务 服务是一个没有可视化界面的组件,它可以在后台长期运行并进行各种操作. 服务的创建 我们只需要继承Service类并实现相应的方法即可创建服务 要想启动服务,还得在AndroidManife ...
- android 学习随笔十七(服务 )
1.Service 四大组件之一 运行于后台,没有前台界面的组件,用于运行需要在后台运行的代码 可以理解为没有前台的Activity 定义方式:创建java类继承Service,清单文件中注册该类 p ...
- Android入门:绑定本地服务
一.绑定服务介绍 前面文章中讲过一般的通过startService开启的服务,当访问者关闭时,服务仍然存在: 但是如果存在这样一种情况:访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定: ...
- [转] Android应用程序与SurfaceFlinger服务的关系概述和学习计划
转自:Android应用程序与SurfaceFlinger服务的关系概述和学习计划 SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件 ...
- Android 使用AIDL调用外部服务
好处:多个应用程序之间建立共同的服务机制,通过AIDL在不同应用程序之间达到数据的共享和数据相互操作, 本文包括: 1 .创建AIDL 服务端.2 .创建AIDL 客户端. 3.客户端调用服务端提供的 ...
随机推荐
- NPOI读取excel功能,兼容xls和xlsx
样例: IWorkbook workbook; string fileExt = Path.GetExtension(filePath); try { using (var file = new Fi ...
- NHibernate 基本配置 (第一篇)
使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学习.今天就来详解一下NHibernate的配置. 一.NHibernate基本配置 NHibernate ...
- android-数据存储之SharedPreferences
数据存储:SharedPreferences 一.基础概要 1.说明 1>主要用于存储单一小数据: 2>存储类型:boolean.float.String.long.int 3>数据 ...
- Android App截包工具
用于分析App通过网络与服务器交互的过程,至于教程,网上很多,软件叫Fiddler
- 加jdk语句
export CLASSPATH JAVA_HOMEJAVA_HOME=/data/jdk1.8.0_65CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOM ...
- 关于UGUI Image Sliced模式的一个BUG。
Unity4.6.2f1 在Android/IOS平台下,Image选择Sliced模式,并且对Sprite设置好Border后,会发现并没有按照预计的 情况进行拉伸. 搜了一下是因为Sprite的G ...
- poj1006-Biorhythms(中国剩余定理)
一,题意:右上角中文.二,思路: 1,由题意得出方程组 2,利用中国剩余定理求解 3,求出最小正整数三,步骤: 1,由题意得出方程组 (n+d) % 23 = p ; (n+d) % 28 = e ; ...
- SQL优化 1
SQL_ID:fvdwtfv18yy0m 先看看sql的预估执行计划 select * from table(dbms_xplan.display_awr('fvdwtfv18yy0m')); sql ...
- 禁止COOKIE后对SESSION的影响
一.理解SESSION机制 简单来说:每一个SESSION都有一个唯一的session_id , 默认情况下,session_id存储在客户端(默认COOKIE['PHPSESSID']), 在使用S ...
- Maven:解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
1.添加M2_HOME的环境变量 2.Preference->Java->Installed JREs->Edit 选择一个jdk, 添加 -Dmaven.multiModuleP ...