Android 网络请求框架android-async-http简单使用

官网介绍: http://loopj.com/android-async-http/

git仓库:https://github.com/loopj/android-async-http


android-async-http最简单使用:

1.获取一个AsyncHttpClient对象

AsyncHttpClient client = new AsyncHttpClient();

2.调用AsyncHttpClient的get或者post方法,实现回调方法AsyncHttpResponseHandler


AsyncHttpClient类通常用在android应用程序中创建异步GET, POST, PUT和DELETE HTTP请求,请求参数通过RequestParams实例创建,响应通过重写匿名内部类ResponseHandlerInterface方法处理。

带参数的使用方法:

get:

通过RequestParams类添加参数

RequestParams params = new RequestParams();
		params.put("", "");
		client.get("http://www.baidu.com", params,
				new AsyncHttpResponseHandler() {

					@Override
					@Deprecated
					public void onFailure(Throwable error) {
						super.onFailure(error);
						Log.e(TAG, "onFailure");
					}

					@Override
					public void onFinish() {
						super.onFinish();
						Log.e(TAG, "onFinish");
					}

					@Override
					public void onStart() {
						super.onStart();
						Log.e(TAG, "onStart");
					}

					@Override
					public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
						super.onSuccess(arg0, arg1, arg2);
						Log.e(TAG, "onSuccess");
						String string = new String(arg2);
						tv_context.setText(string);
					}

				});

post请求方式和get差不多,只是换一个方式而已。

下面是上传图片到服务器

RequestParams params = new RequestParams();
params.put("file_path", new File(file_path));

RequestParams params = new RequestParams();
		params.put("file_path", new File(file_path));
		client.post(url, params, new AsyncHttpResponseHandler() {
			@Override
			public void onSuccess(int statusCode, Header[] headers,
					byte[] responseBody) {
				
			}

			@Override
			public void onFailure(int statusCode, Header[] headers,
					byte[] responseBody, Throwable error) {
				
			}

			@Override
			public void onProgress(int bytesWritten, int totalSize) {
				super.onProgress(bytesWritten, totalSize);
				
			}

		});

onProgress方法中可以添加进度显示操作

当然, 也支持图片文件添加为字节流上传。

那么每次请求是不是都要获取一遍AsyncHttpClient对象了,看看官方提供的例子:

public class TwitterRestClient {
		    private static final String BASE_URL = "http://api.twitter.com/1/";
		    private static AsyncHttpClient client = new AsyncHttpClient();

		    public static void get(String url, RequestParams params,  AsyncHttpResponseHandler responseHandler) {
		        client.get(getAbsoluteUrl(url), params, responseHandler);
		    }

		    public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
		        client.post(getAbsoluteUrl(url), params, responseHandler);
		    }

		    private static String getAbsoluteUrl(String relativeUrl) {
		        return BASE_URL + relativeUrl;
		    }
		}

推荐使用一个静态的AsyncHttpClient对象,我们可以封装一个请求静态类,包括get/ post无参请求,get/ post带参请求,上传,下载方法。。每次只需调用对应的方法就行了。

更多详细的的使用方法可以参考官方的文档:http://loopj.com/android-async-http/


因为是异步网络请求框架,当然不要忘记了网络权限:

<uses-permission android:name="android.permission.INTERNET" />




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值