AsyncHttpClient的get、post簡單使用方法
阿新 • • 發佈:2019-02-14
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","失敗");
}
});