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

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;

/**

* 异步请求服务器

*

* @author scd

*

*/

public class AsyncJsonUtilGet {

private static final String URL = "";

private Context mContext;

/**

* 构造方法

*

* @param 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> hf = conn.getHeaderFields();

if (hf == null) {

return null;

}

Set key = hf.keySet();

if (key == null) {

return null;

}

for (String skey : key) {

List 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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值