关于AsyncHttpClient的学习与使用(智能农业沙盘)

本文介绍了AsyncHttpClient框架的优势及使用方法,包括如何配置依赖、创建HTTP客户端实例、执行GET和POST请求,并提供了具体示例。

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

一、AsyncHttpClient的优点

1.android-async-http 开源框架可以轻松地获取网络数据或者向服务器发送数据,最关键的是,它是异步框架,在底层使用线程池处理并发请求,效率很高,使用又特别简单。
2.AsyncHttpClient 作为 android-async-http 框架的一个核心应用类,使用简单,可以处理文本、二进制等各种格式的 web 资源。

二、AsyncHttpClient的使用方法

我们单独写这个AsyncHttpClient对大多人来说会有困难,所以我们可以到Githap网站上去搜索android-async-http来进行学习和使用
1.首先要在build.gradle里导一个数据包

compile 'com.loopj.android:android-async-http:1.4.9'

2.使用静态访问器创建一个http客户端类

public class InfoWeb {
    public static final String Base_url="http://192.168.1.101:8890/type/jason/action/";
    private static AsyncHttpClient client=new AsyncHttpClient();


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

    private static String getAbsoluteUrl(String relateUrl) {
        return Base_url+relateUrl;
    }
    public static void post(Context mContext, String url, HttpEntity entity,String contentType,AsyncHttpResponseHandler responseHandler){
        client.post(mContext,url,entity,contentType,responseHandler);
    }

}

注意点:我们要根据自己的需要来设定BASE_URL ,不可盲目照搬


3.接下来就是在主体类里填充数据了,来进行相应的获取数据和控制的操作
基础操作:

public class WebActivity extends AppCompatActivity implements View.OnClickListener {

    private Button infowebBtn;
    private Button contralBtn;
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);

        infowebBtn = findViewById(R.id.info_web_btn);
        contralBtn = findViewById(R.id.contral_btn);
        infowebBtn.setOnClickListener(this);
        contralBtn.setOnClickListener(this);


    }

    @Override
    public void onClick(View view) {

        switch (view.getId()) {

获取数据

 case R.id.info_web_btn:
                RequestParams params = new RequestParams();
                params.put("username", "admin");

                InfoWeb.get("getSensor", params, new TextHttpResponseHandler() {
                    @Override
                    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                        Toast.makeText(WebActivity.this, "fail", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onSuccess(int statusCode, Header[] headers, String responseString) {
                        Toast.makeText(WebActivity.this, responseString, Toast.LENGTH_SHORT).show();
                        //Log.e("WebActivity",responseString);

                    }
                });
                break;

控制

 case R.id.contral_btn:
                InfoWeb infoWeb = new InfoWeb();
                String url = infoWeb.Base_url;

                JSONObject jsonObject = new JSONObject();
                try {
                    jsonObject.put("Buzzer", 1);
                    jsonObject.put("Roadlamp", 1);
                    jsonObject.put("Blower", 1);
                    jsonObject.put("WaterPump", 1);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                ByteArrayEntity entity = null;
                try {
                    entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"));
                    entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                RequestParams params1 = new RequestParams();
                params1.put("username", "");

                InfoWeb.post(mContext, url + "control", entity, "application/json", new TextHttpResponseHandler() {
                    @Override
                    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                        // Toast.makeText(WebActivity.this, "failed", Toast.LENGTH_SHORT).show();
                        Log.e("WebActivity", "failed*********************");
                    }

                    @Override
                    public void onSuccess(int statusCode, Header[] headers, String responseString) {
                        Toast.makeText(WebActivity.this, responseString, Toast.LENGTH_SHORT).show();
                        //Log.e("WebActivity",responseString+"************************");

                    }
                });
                break;

注意点:控制操作比获取数据操作有个json解析 要多加注意


数据包的地址

有需要的朋友可以自行去GitHub官网上搜索https://github.com/loopj/android-async-http
笔芯!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值