iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android网络请求库android-async-http介绍
  • 938
分享到

Android网络请求库android-async-http介绍

HTTPandroid网络请求asyncAndroid 2022-06-06 10:06:42 938人浏览 薄情痞子
摘要

Android网络请求库:android-async-Http开源框架 之前有一篇描述了客户端请求服务器端的方式—Post的请求方式。今天介绍一个请求服务器的一个开源库—an

Android网络请求库:android-async-Http开源框架
之前有一篇描述了客户端请求服务器端的方式—Post的请求方式。今天介绍一个请求服务器的一个开源库—android-async-http库。
1. 概念:
这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法(匿名内部类)处理请求结果。
2. 特征:
(1).处理异步Http请求,并通过匿名内部类处理回调结果
**(2).**Http异步请求均位于非UI线程,不会阻塞UI操作。
(3).通过线程池处理并发请求处理文件上传、下载,响应结果自动打包JSON格式。
3. 相应的核心类的介绍:
(1).AsyncHttpResponseHandler:请求返回处理成功、失败、开始、完成等自定义的消息的类。
(2).BinaryHttpResponseHandler:AsyncHttpResponseHandler的子类。该类是一个字节流返回处理的类。用于处理图片等。
(3).jsonHttpResponseHandler:AsyncHttpResponseHandler的子类。这是一个服务器与客户端之间用Json数据交流时使用的类。客户端请求服务器的参数是Json数据类型的,服务器返回给客户端的数据也是Json数据类型的。
(4).RequestParams:封装参数处理的类。将客户端请求的参数封装在该类中。
(5).AsyncHttpClient:异步客户端请求的类。
(6).SyncHttpClient:同步客户端请求的类。AsyncHttpClient的子类。
注意:HttpUtil这个类主要列出了我们常用的get方法,在要使用的地方,调用该类就行了。需要添加android-async-http-1.4.7.jar文件包。
代码如下:

(1).AsyncJsonUtilGet.java


package com.chengdong.su.util.get;
import org.apache.http.Header;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.widget.Toast;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;

public class AsyncJsonUtilGet {
  private static final String URL = "";
  private Context mContext;
  
  public AsyncJsonUtilGet(Context mContext) {
    super();
    this.mContext = mContext;
  }
  
  public void emailReGISter(String email, String passWord, String username) {
    RequestParams params = new RequestParams();
    JSONObject jsonObject = new JSONObject();
    try {
      jsonObject.put("email", email);
      jsonObject.put("password", password);
      jsonObject.put("username", username);
    } catch (JSONException e) {
      e.printStackTrace();
    }
    params.put("jsonObject", jsonObject);
    // get请求方式
    HttpUtil.get(URL, params, new JsonHttpResponseHandler() {
      @Override
      public void onFailure(int statusCode, Header[] headers,
          Throwable throwable, JSONObject errorResponse) {
        super.onFailure(statusCode, headers, throwable, errorResponse);
        Toast.makeText(mContext, "Register failed!", Toast.LENGTH_SHORT)
            .show();
      }
      @Override
      public void onSuccess(int statusCode, Header[] headers,
          JSONObject response) {
        String errorCode = response.optString("ErrorCode");
        // 表示请求成功
        if (errorCode.equals("0")) {
          Toast.makeText(mContext, "注册成功", Toast.LENGTH_LONG).show();
          // response:返回的数据都在这个参数中,根据业务要求进行实现功能
        } else {
          super.onSuccess(statusCode, headers, response);
        }
      }
    });
  }
}

(2).HttpUtil.java工具类:注:需要添加jar包


package com.chengdong.su.util.get;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalfORMedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.BinaryHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
public class HttpUtil {
  public static final String STATUS_NETWORK = "network_available";
  private static AsyncHttpClient client = new AsyncHttpClient();
  static {
    client.setTimeout(11000);
  }
  public static void get(String urlString, AsyncHttpResponseHandler res) {
    client.get(urlString, res);
  }
  public static void get(String urlString, RequestParams params,
      AsyncHttpResponseHandler res) {
    client.get(urlString, params, res);
  }
  public static void get(String urlString, JsonHttpResponseHandler res)
  {
    client.get(urlString, res);
  }
  public static void get(String urlString, RequestParams params,
      JsonHttpResponseHandler res)
  {
    client.get(urlString, params, res);
  }
  public static void get(String uString, BinaryHttpResponseHandler bHandler)
  {
    client.get(uString, bHandler);
  }
  public static AsyncHttpClient getClient() {
    return client;
  }
  public static boolean isNetworkConnected(Context context) {
    if (context != null) {
      ConnectivityManager mConnectivityManager = (ConnectivityManager) context
          .getSystemService(Context.CONNECTIVITY_SERVICE);
      NetworkInfo mNetworkInfo = mConnectivityManager
          .getActiveNetworkInfo();
      if (mNetworkInfo != null) {
        return mNetworkInfo.isAvailable();
      }
    }
    return false;
  }
  // 从UrlConnection中获取文件名称
  public static String getFileName(String url) {
    String fileName = null;
    boolean isOK = false;
    try {
      URL myURL = new URL(url);
      URLConnection conn = myURL.openConnection();
      if (conn == null) {
        return null;
      }
      Map<String, List<String>> hf = conn.getHeaderFields();
      if (hf == null) {
        return null;
      }
      Set<String> key = hf.keySet();
      if (key == null) {
        return null;
      }
      for (String skey : key) {
        List<String> values = hf.get(skey);
        for (String value : values) {
          String result;
          try {
            result = value;
            int location = result.indexOf("filename");
            if (location >= 0) {
              result = result.substring(location
                  + "filename".length());
              result = java.net.URLDecoder
                  .decode(result, "utf-8");
              result = result.substring(result.indexOf("\"") + 1,
                  result.lastIndexOf("\""));
              fileName = result
                  .substring(result.indexOf("=") + 1);
              isOK = true;
            }
          } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
          }
        }
        if (isOK) {
          break;
        }
      }
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return fileName;
  }
}

开源之家介绍:http://open.jb51.net/project/app-framework/android-async-http.html

您可能感兴趣的文章:微信小程序 http请求封装详解及实例代码微信小程序 封装http请求实例详解微信小程序 POST请求(网络请求)详解及实例代码iOS开发中使用NSURLConnection类处理网络请求的方法Android最基本的异步网络请求框架Android Xutils3网络请求的封装详解及实例代码实例讲解pythonSocketServer模块处理网络请求的用法微信小程序 网络请求api详解微信小程序网络请求的封装与填坑之路


--结束END--

本文标题: Android网络请求库android-async-http介绍

本文链接: https://www.lsjlt.com/news/26732.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作