안 드 로 이 드 비동기 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);
            }
        });
    }
}

 더 많은 문 서 를 볼 수 있 습 니 다:  AsyncHttpClientRequestParams  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.
 
 
끝나다
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기