1. 程式人生 > >AsyncHttpClient的get、post簡單使用方法

AsyncHttpClient的get、post簡單使用方法

1.AsyncHttpClient使用前提

首先使用AsyncHttpClient之前需要在Gradle中下載好我們所需要的包。
   compile 'com.loopj.android:android-async-http:1.4.9'

2.AsyncHttpClient使用方法

1. 單條使用
首先創建出AsyncHttpClient的物件 client ;
使用物件client點出方法  
AsyncHttpClient client = new AsyncHttpClient();
client.get("https://www.google.com", new
AsyncHttpResponseHandler()client.get("https://www.google.com", new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, byte[] response) { //獲取成功方法 } @Override public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) { // 獲取失敗方法
} }
2.如果需要重複使用建議方法
由於需要多次使用,程式碼被重複利用,所以我們先建立一個公共類,每次使用時進行呼叫即可;
公共類.方法進行呼叫;
實現方法回撥。
public class AsycHttp {
    private static final String HTTP="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); } public static void post(Context context, String url, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler){ client.post(context,getAbsoluteUrl(url),entity,contentType,responseHandler); } private static String getAbsoluteUrl(String url) { return HTTP+url; } }
 AsycHttp.get("getSensor", null, new TextHttpResponseHandler() {
 @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
        //獲取成功方法
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
        // 獲取失敗方法

            }

 }

3.AsyncHttpClient的get方法

既然已經知道如何使用AsyncHttpClient了,我們先來看看AsyncHttpClient中的get方法;
get方法中有三個引數:url,params,responseHandler;
文件介面:http://103.244.59.105:8014/paopaoserver/categorylist?params={"classify_id":70,"page":1,"page_count":2} 
那上面的例子來說:
url就是上面的:http://103.244.59.105:8014/paopaoserver/categorylist
params為上面的:params={"classify_id":70,"page":1,"page_count":2}    
responseString 為網站中的內容。
程式碼如下:
public class AsycHttp {
    private static final String HTTP="http://192.168.1.101:8890/type/jason/action/";
    private static AsyncHttpClient client=new AsyncHttpClient();/
//get方法;
    public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler){
        client.get(getAbsoluteUrl(url), params, responseHandler);
    }

    public static void post(Context context, String url, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler){
        client.post(context,getAbsoluteUrl(url),entity,contentType,responseHandler);
    }

    private static String getAbsoluteUrl(String url) {
        return HTTP+url;
    }
}
     RequestParams requestParams = new RequestParams();
     requestParams.put("params", "{\"classify_id\":70,\"page\":1,\"page_count\":2}");

                AsycHttp.get("getSensor", requestParams , new TextHttpResponseHandler() {
                    @Override
                    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                        Log.e("0000000", "失敗");
                        Toast.makeText(Main2Activity.this, "訪問失敗", Toast.LENGTH_SHORT).show();
                    }

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

4.AsyncHttpClient的post方法

1.AsyncHttpClient.post傳遞鍵值對型別引數:
公共類中post方法:
public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      client.post(getAbsoluteUrl(url), params, responseHandler);
  }
使用時建立RequestParams 物件:
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data")
2.AsyncHttpClient.post傳遞Json型別引數:
公共類中post方法:
post引數:Context ,url,HttpEntity ,contentType,responseHandler
 public static void post(Context context, String url, HttpEntity entity,String contentType, ResponseHandlerInterface responseHandler){
        client.post(context,getAbsoluteUrl(url),entity,contentType,responseHandler);
    }
首先建立JSONObject 物件 jsonObject;
將JSon資料使用jsonObject.put()傳遞;
比如:{'Buzzer':1}資料-> jsonObject.put("Buzzer",1);
建立ByteArrayEntity entity=null;
設定 entity;
AsycHttp.post(Context,url,entity,"application/json",new JsonHttpResponseHandler(){
public void onSuccess(...){
}
public void onFailure(...){
}
});
  JSONObject jsonObject=new JSONObject();
        try {
            if (string=="all"){
                jsonObject.put("Roadlamp",1);
                jsonObject.put("WaterPump",1);
                jsonObject.put("Blower",1);
            }else {
                jsonObject.put(string,i);
            }
            //jsonObject.put("Roadlamp",1);
            //jsonObject.put("WaterPump",1);
            //jsonObject.put("Blower",1);
            //  jsonObject.put("Buzzer",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();
        }
        AsycHttp.post(Main2Activity.this,"control",entity,"application/json",new JsonHttpResponseHandler(){
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                super.onSuccess(statusCode, headers, response);
                Log.e("0000000",""+response);
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                super.onFailure(statusCode, headers, throwable, errorResponse);
                Log.e("0000000","失敗");
            }
        });