안 드 로 이 드 비동기 Http 클 라 이언 트 중국어 매 뉴 얼 1.4.6
8586 단어 android
Apache 기반 HttpClient 의 android 비동기 패키지
논리 적 으로 실행 되 는 스 레 드 = = Callback 을 만 드 는 스 레 드 (Httpclient 를 만 드 는 스 레 드 가 아 님)
예:
new Thread(new Runnable() {
@Override
public void run() {
Log.d(LOG_TAG, "Before Request");
client.get(Activity.this, URL, headers, null, responseHandler);
Log.d(LOG_TAG, "After Request");
}
}).start();
// callback , runOnUiThread
특징:
1. 비동기 요청, 익명 리 셋 처리 응답
2. http 요청 은 UI 스 레 드 외
3. 스 레 드 풀, 공용 자원 사용 요청
4. GET / POST 매개 변수 구축 (RequestParams)
5. 다 중 파일 업로드, 불필요 한 3 자 라 이브 러 리 필요 없 음
6. JSON 스 트림 업로드
7. 순환 과 방향 전환 처리
8. 가방 은 90k
9. 자동 재연 결, 네트워크 연결 방식 에 따라
10.2 진 통신 프로 토 콜 BinaryHttpResponseHandler
11. JSON 해석 JSonHttpResponseHandler 내장
파일 저장 FileAsyncHttpResponseHandler
13。지속 적 인 쿠키 저장, Shared Preferences 에 저장
14 GSON 을 포함 하여 여러 개의 JSon 해석 을 지원 합 니 다. BaseJSonHttp ResponseHandler 를 사용 합 니 다.
15. SAX 해석 지원 SaxAsyncHttpResponseHandler
16. UTF 8 뿐만 아니 라 다 중 언어 지원
top 랭 킹 에서 의 응용
。。。
설치 및 사용
설치 하 다.
compile 'com.loopj.android:android-async-http:1.4.5'
포함 하 다
import com.loopj.android.http.*;
비동기 요청 만 들 기
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://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
}
});
최 적 실천: 정적 Http client 만 들 기
정적 Httpclient 클래스 만 들 기
import com.loopj.android.http.*;
public class TwitterRestClient {
private static final String BASE_URL = "http://api.twitter.com/1/";
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(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.post(getAbsoluteUrl(url), params, responseHandler);
}
private static String getAbsoluteUrl(String relativeUrl) {
return BASE_URL + relativeUrl;
}
}
사용 하기 편 해 요.
import org.json.*;
import com.loopj.android.http.*;
class TwitterRestClientUsage {
public void getPublicTimeline() throws JSONException {
TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// If the response is JSONObject instead of expected JSONArray
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Pull out the first event on the public timeline
JSONObject firstEvent = timeline.get(0);
String tweetText = firstEvent.getString("text");
// Do something with the response
System.out.println(tweetText);
}
});
}
}
더 많은 문 서 를 볼 수 있 습 니 다: AsyncHttpClient , RequestParams and AsyncHttpResponseHandler
지속 적 인 쿠키 저장 PersistentCookieStore
라 이브 러 리 에 PersistentCookieStore 가 포 함 된 것 은 Apache 를 실현 한 HttpClient 의 CookieStore 인터페이스 로 자동 으로 지속 적 으로 저 장 됩 니 다.
다음은 하나의 예 이다.
AsyncHttpClient myClient = new AsyncHttpClient();
// Cookie
PersistentCookieStore myCookieStore = new PersistentCookieStore(this);
myClient.setCookieStore(myCookieStore);
// , 。
// cookie
보다 PersistentCookieStore Javadoc
매개 변수 추가
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");
//
RequestParams params = new RequestParams("single", "value");
//
HashMap<String, String> paramMap = new HashMap<String, String>();
paramMap.put("key", "value");
RequestParams params = new RequestParams(paramMap);
See the RequestParams Javadoc for more information.
파일 업로드 (RequestParams)
다 중 파일 업로드 가능
//
InputStream myInputStream = blah;
RequestParams params = new RequestParams();
params.put("secret_passwords", myInputStream, "passwords.txt");
// File
File myFile = new File("/path/to/file.png");
RequestParams params = new RequestParams();
try {
params.put("profile_picture", myFile);
} catch(FileNotFoundException e) {}
// byte[]
byte[] myByteArray = blah;
RequestParams params = new RequestParams();
params.put("soundtrack", new ByteArrayInputStream(myByteArray), "she-wolf.mp3");
See the RequestParams Javadoc for more information.
바 이 너 리 파일 다운로드 (FileAsyncHttpResponseHandler)
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://example.com/file.png", new FileAsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, File response) {
// Do something with the file `response`
}
});
See the FileAsyncHttpResponseHandler Javadoc for more information.
http 기본 인증 추가
많은 요청 이 사용자 이름 / 비밀번호 인증 을 가 져 와 야 합 니 다.
AsyncHttpClient client = new AsyncHttpClient();
client.setBasicAuth("username","password/token");
client.get("http://example.com");
AsyncHttpClient client = new AsyncHttpClient();
client.setBasicAuth("username","password", new AuthScope("example.com", 80, AuthScope.ANY_REALM));
client.get("http://example.com");
See the RequestParams Javadoc for more information.
끝나다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.