1. 1:服务器端
    /**
    * Created by LiuFei on 2016/1/22.
    */
    public class HttpService extends Service{
  2.  
  3. @Override
    public IBinder onBind(Intent intent) {
    return null;
    }
  4.  
  5. @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);
    }
  6.  
  7. /**
    * 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);
    }
    }
  8.  
  9. 2:客户端
  1. public class SetData {
  2.  
  3. private static SetData instance ;
  4.  
  5. public static SetData getInstance(){
    if(instance == null){
    instance = new SetData();
    }
    return instance ;
    }
  6.  
  7. 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);
    }
  8.  
  9. 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);
    }
    }
  1. public class NetHttpData {
  2.  
  3. private final String ERROR = "error";
    private static NetHttpData instance ;
  4.  
  5. public static NetHttpData getInstance(){
    if(instance == null) instance = new NetHttpData();
    return instance ;
    }
  6.  
  7. /** 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());
    }
  8.  
  9. for(int i=0 ;i<list.size();i++){
    Log.i(list.get(i).getName()+"------",list.get(i).getValue());
    }
  10.  
  11. 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 ;
    }
  12.  
  13. /** 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 ;
    }
  14.  
  15. 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服务的更多相关文章

  1. 如何搭建基于C#和 Appium 的 Android自动测试环境

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使 ...

  2. 创建Android守护进程(底层服务)【转】

    本文转载自:https://blog.csdn.net/myfriend0/article/details/80016739 创建Android守护进程(底层服务) 前言 Android底层服务,即运 ...

  3. 基于RxJava2+Retrofit2精心打造的Android基础框架

    代码地址如下:http://www.demodashi.com/demo/12132.html XSnow 基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络.上传.下载 ...

  4. 我的Android进阶之旅------>Android基于HTTP协议的多线程断点下载器的实现

    一.首先写这篇文章之前,要了解实现该Android多线程断点下载器的几个知识点 1.多线程下载的原理,如下图所示 注意:由于Android移动设备和PC机的处理器还是不能相比,所以开辟的子线程建议不要 ...

  5. Android中后台的劳动者“服务”

    前言 作为四大组件之一的Service,想必不少开发者都是了解的,那具体熟悉吗?是不是对Service中的每个知识点是否了解,它与Activity的关系又是什么样的,我们所理解的后台服务跟Servic ...

  6. Android四大组件之—— 使用服务进行后台操作

    什么是服务 服务是一个没有可视化界面的组件,它可以在后台长期运行并进行各种操作. 服务的创建 我们只需要继承Service类并实现相应的方法即可创建服务 要想启动服务,还得在AndroidManife ...

  7. android 学习随笔十七(服务 )

    1.Service 四大组件之一 运行于后台,没有前台界面的组件,用于运行需要在后台运行的代码 可以理解为没有前台的Activity 定义方式:创建java类继承Service,清单文件中注册该类 p ...

  8. Android入门:绑定本地服务

    一.绑定服务介绍   前面文章中讲过一般的通过startService开启的服务,当访问者关闭时,服务仍然存在: 但是如果存在这样一种情况:访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定: ...

  9. [转] Android应用程序与SurfaceFlinger服务的关系概述和学习计划

    转自:Android应用程序与SurfaceFlinger服务的关系概述和学习计划 SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件 ...

  10. Android 使用AIDL调用外部服务

    好处:多个应用程序之间建立共同的服务机制,通过AIDL在不同应用程序之间达到数据的共享和数据相互操作, 本文包括: 1 .创建AIDL 服务端.2 .创建AIDL 客户端. 3.客户端调用服务端提供的 ...

随机推荐

  1. NPOI读取excel功能,兼容xls和xlsx

    样例: IWorkbook workbook; string fileExt = Path.GetExtension(filePath); try { using (var file = new Fi ...

  2. NHibernate 基本配置 (第一篇)

    使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学习.今天就来详解一下NHibernate的配置. 一.NHibernate基本配置 NHibernate ...

  3. android-数据存储之SharedPreferences

    数据存储:SharedPreferences 一.基础概要 1.说明 1>主要用于存储单一小数据: 2>存储类型:boolean.float.String.long.int 3>数据 ...

  4. Android App截包工具

    用于分析App通过网络与服务器交互的过程,至于教程,网上很多,软件叫Fiddler

  5. 加jdk语句

    export CLASSPATH JAVA_HOMEJAVA_HOME=/data/jdk1.8.0_65CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOM ...

  6. 关于UGUI Image Sliced模式的一个BUG。

    Unity4.6.2f1 在Android/IOS平台下,Image选择Sliced模式,并且对Sprite设置好Border后,会发现并没有按照预计的 情况进行拉伸. 搜了一下是因为Sprite的G ...

  7. poj1006-Biorhythms(中国剩余定理)

    一,题意:右上角中文.二,思路: 1,由题意得出方程组 2,利用中国剩余定理求解 3,求出最小正整数三,步骤: 1,由题意得出方程组 (n+d) % 23 = p ; (n+d) % 28 = e ; ...

  8. SQL优化 1

    SQL_ID:fvdwtfv18yy0m 先看看sql的预估执行计划 select * from table(dbms_xplan.display_awr('fvdwtfv18yy0m')); sql ...

  9. 禁止COOKIE后对SESSION的影响

    一.理解SESSION机制 简单来说:每一个SESSION都有一个唯一的session_id , 默认情况下,session_id存储在客户端(默认COOKIE['PHPSESSID']), 在使用S ...

  10. 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 ...