关于Android中的AsynHttpClient用法和注意事项

本文介绍了Android中AsyncHttpClient的使用方法及其与传统HttpClient的区别。通过示例代码详细讲解了如何发送HTTP请求,并处理响应结果。此外,还列举了在使用过程中需要注意的系统权限设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Android中的AsynHttpClient用法和注意事项

介绍:AsyncHttpClient 是一种发送http协议的异步请求的安卓框架,它和传统的HttpClient的区别在于,不用在另创建子线程,代码简洁,使用方便
而且是异步的请求,比同步请求效率高很多
jar: android-async-http-1.4.8.jar;
解决方法中Header类没有声明的情况:在build.gradle中android{}大括号内,写:useLibrary ‘org.apache.http.legacy’
之后在点Sync Now即可解决;
(如果使用后报很多的错误信息,请看下方的注意事项)
示例:

private void zhuanPinYin(String input) {
    //发送请求的url,和在web开发当中的访问路径一样,8080是端口号,interview是项目名,pinyin是访问时的action或controlle
        String url = "http://192.168.2.43:8080/interview/pinyin";
    //实例化AsyncHttpClient对象,构建浏览器
        AsyncHttpClient client = new AsyncHttpClient();
    //params进行参数传递,key和getParmarmiter("")中的一致,value是传递的值
        RequestParams params = new RequestParams();
        params.put("abc",input);
    //post为提交方式,也可以使用get方式进行提交
        client.post(url, params, new AsyncHttpResponseHandler() {
            @Override
        //当请求成功或状态码小于300的时候,程序就会进入到onSuccess方法
        //代表请求成功,为了代码更严谨,在方法内还是要判断一下状态码是否等于200
            public void onSuccess(int i, Header[] headers, byte[] bytes) {
                //i是状态码,还记得你以前背过的302状态码吗,当i为200的时候
        //代表请求已成功发送
        //bytes数组中返回的服务器端返回的数据
        String temp = new String(bytes);
                Log.d("Success","成功了"+i+"   "+temp);
                try {
            //如果服务器端返回的是json格式的数据可使用下面的方式进行取值
                    JSONObject object = new JSONObject(temp);
                    Log.d("通知:","正在转换拼音中");
            //取值的方式:根据json数据的key获取到对应的value,如下面的"拼音"就是我获取json的key
                    pinYin = object.getString("拼音");
                }catch (JSONException e){
                    e.printStackTrace();
                }

            }

            @Override
            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                Log.d("failure","失败了"+i);
            }
        });
    }

注意!!!
在使用AsyncHttpClient时,要注意系统权限的问题噢!如果不开系统权限,会导致很多的错误信息

权限信息为:(并不是全部都要使用,但是不知道哪个有用哪个没用,还是都放进去)

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值