基于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.客户端调用服务端提供的 ...
随机推荐
- BZOJ4176: Lucas的数论
Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其 ...
- js小效果-全选
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- Idea_Intellij Idea 12 生成serialVersionUID的方法
默认情况下Intellij IDEA是关闭了继承了java.io.Serializable的类生成serialVersionUID的警告.如果需要ide提示生成serialVersionUID,那么需 ...
- Resharp最新破解方法
ReSharper是一个JetBrains公司出品的著名的代码生成工具,其能帮助Microsoft Visual Studio成为一个更佳的IDE.它包括一系列丰富的能大大增加C#和Visual Ba ...
- asp.net中验证控件的使用方法
用于检查是否有输入值 :RequiredFieldValidator(必须字段验证) 按设定比较两个输入 :CompareValidator(比较验证) 输入是否在指定范围 :RangeValidat ...
- border-radius 圆角半径
CSS3属性之一:border-radius 语法: border-radius : none | <length>{1,4} [ / <length>{1,4} ]? 相关属 ...
- open Session In View和过滤器配置
Open Session In View模式的主要思想是:当Web Request(浏览器请求)开始时,自动打开Session,当Web Request结束时,自动关闭Session.也就是说,Ses ...
- Windows8.1自定义快捷方式添加到开始屏幕
Windows8.1自定义快捷方式添加到开始屏幕 将快捷方式复制到如下路径,在开始屏幕的所有中找到对应快捷方式,右键选择添加到开始屏幕即可. C:\Users\%USERNAME%\AppData\R ...
- 流式布局&固定宽度&响应式&rem
我们现在在切页面布局的使用常用的单位是px,这是一个绝对单位,web app的屏幕适配有很多中做法,例如:流式布局.限死宽度,还有就是通过响应式来做,但是这些方案都不是最佳的解决方法. 1.流式布局: ...
- css中的一些兼容问题
浏览器兼容 为什么会有兼容问题? 由于市场上浏览器种类众多,而不同浏览器其内核亦不尽相同,所以各个浏览器对网页的解析就有一定出入,这也是导致浏览器兼容问题出现的主要原因,我们的网页需要在主流浏览器上正 ...