android-async-httpの使い方
ndroidでは、ネットワークリクエストはApache HTTP ClientまたはHttpURLConnectが一般的ですが、この2つのクラスライブラリを直接使用するには、ネットワークpostおよびgetリクエストを完了するために多くのコードを書く必要がありますが、android-async-httpというライブラリを使用すると、操作を大幅に簡素化できます.
今日紹介するのはAndroidで同様に強力なネットワークリクエストライブラリandroid-async-http(公式サイト:https://loopj.com/android-async-http/)
主な特徴は次のとおりです.
1.非同期Http要求を処理し、匿名内部クラスを通じてコールバック結果を処理する.Http要求はいずれも非UIスレッドにあり、UI操作をブロックすることはない.スレッドプールを介して同時要求4を処理する.ファイルのアップロード、ダウンロードの処理
android-async-http実装ダウンロード
依存を追加:
httpパッケージのインポート:
その後、公式サイトでお勧めした方法で、多くの作業量を節約することをお勧めします.
静的Httpクライアントの作成:この例では、TwitterのAPIと通信するために静的アクセサを使用してhttpクライアントクラスを作成します.
これにより、apiをコードで簡単に使用できます.
AsyncHttpClientはJsonのPost要求を行う:
中のHttpUtilは上に私が書いた静的なHttpクライアントです.
新しいAsyncHttpClientインスタンスを直接作成し、次のように要求することもできます.
今日紹介するのはAndroidで同様に強力なネットワークリクエストライブラリandroid-async-http(公式サイト:https://loopj.com/android-async-http/)
主な特徴は次のとおりです.
1.非同期Http要求を処理し、匿名内部クラスを通じてコールバック結果を処理する.Http要求はいずれも非UIスレッドにあり、UI操作をブロックすることはない.スレッドプールを介して同時要求4を処理する.ファイルのアップロード、ダウンロードの処理
android-async-http実装ダウンロード
依存を追加:
dependencies {
compile 'com.loopj.android:android-async-http:1.4.9'
}
httpパッケージのインポート:
import com.loopj.android.http.*;
その後、公式サイトでお勧めした方法で、多くの作業量を節約することをお勧めします.
静的Httpクライアントの作成:この例では、TwitterのAPIと通信するために静的アクセサを使用してhttpクライアントクラスを作成します.
import com.loopj.android.http.*;
/**
* Created by Administrator on 2018/4/10/010.
*/
public class HttpUtil {
private static final String BAse_url = "http://192.168.1.105: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(android.content.Context context, java.lang.String url, cz.msebera.android.httpclient.HttpEntity entity, java.lang.String contentType, ResponseHandlerInterface responseHandler) {
client.post(context,getAbsoluteUrl(url), entity, contentType,responseHandler);
}
private static String getAbsoluteUrl(String url) {
return BAse_url + url;
}
}
これにより、apiをコードで簡単に使用できます.
RequestParams requestParams = new RequestParams();
requestParams.put("username", "admin");
HttpUtil.get("getSensor", requestParams, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
Toast.makeText(MainActivity.this, responseString, Toast.LENGTH_SHORT).show();
Log.e("dqwqwfsdgsdg", responseString + "...");
}
});
AsyncHttpClientはJsonのPost要求を行う:
JSONObject jsonObject = new JSONObject();
try {
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();
}
HttpUtil.Post(mContext, "control", entity, "application/json", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
Log.e("rs", response.toString());
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
}
});
中のHttpUtilは上に私が書いた静的なHttpクライアントです.
新しいAsyncHttpClientインスタンスを直接作成し、次のように要求することもできます.
AsyncHttpClient client = new AsyncHttpClient();
client.get("https://www.google.com", new AsyncHttpResponseHandler() {
@Override
public void onStart() {
// called before request is started
}
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] response) {
// called when response HTTP status is "200 OK"
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
// called when response HTTP status is "4XX" (eg. 401, 403, 404)
}
@Override
public void onRetry(int retryNo) {
// called when request is retried
}
});