OKHttp (1) 기본 사용
프로필
OkHttp 는 현재 비교적 뛰어난 네트워크 통신 라 이브 러 리 로 원생 의 HTTPURLConnection 을 대체 할 수 있 고 Http / SPDY 를 지원 하 며 간단 하고 사용 하기 쉬 우 며 확장 성 이 좋다 는 등 장점 이 있다.
2 HttpURLConnection
OkHttp 를 사용 하지 않 고 네트워크 요청 을 어떻게 실현 하 는 지 살 펴 보 자.
프레임 워 크 를 사용 하지 않 기 전에 저 희 는 기본적으로 원본 HttpClient (도 태 됨) 와 HttpURLConnection 을 사용 하여 HTTP 요청 을 보 냅 니 다.
HttpURLConnection 은 다 용도, 경량급 HTTP 클 라 이언 트 입 니 다. 대부분의 응용 프로그램 은 이 를 사용 하여 HTTP 작업 을 할 수 있 습 니 다.다음은 Get 방법의 Http 요청 을 간단하게 사용 합 니 다.
아래 의 조작 은 모두 하위 라인 에서 진행 되 는 것 을 주의 하 시 오
// URL HttpURLConnection
URL murl = new URL("https://www.baidu.com");
HttpURLConnection connection = (HttpURLConnection)murl.openConnection;
// ( , , ,header
connection.setConnectionTimeout(8888);
connection.setRequestMethod("GET");
...
// POST
connection.connect();
mInputSteam = connection.getInputSteam();
//
int code = mHttpURLConnection.getResponseCode();
String respose = converStreamToString(mInputStream);
Log.i("baidu", " :" + code + "
:
" + respose);`
// ,
mInputSteam.close();
connection.disconnect();
이상 은 HttpURLConnection 의 기본 동작 입 니 다.
3 OkHttp 의 사용
3.1 요청 받 기
//
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.get()
.url("https://www.4399.com")
.build();
Call call = client.newCall(request);
try {
//1. call.execute(), ( ) Response
Response response = call.execute();
//2. call.enqueue(Callback callback), Callback
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.w("cozing", " ");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// Response
Log.w("cozing", " ");
}
});
} catch (IOException e) {
e.printStackTrace();
}
3.2 포스트 요청
OkHttpClient client = new OkHttpClient();
//
FormBody formBody = new FormBody.Builder()
.add("username", "admin")
.add("password", "admin")
.build();
Request request = new Request.Builder()
.post(formBody)
.url("https://www.4399.com")
.build();
Call call = client.newCall(request);
try {
Response response = call.execute();
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.w("cozing", " ");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// Response
Log.w("cozing", " ");
}
});
} catch (IOException e) {
e.printStackTrace();
}
이상 은 바로 OkHttp 의 기본 적 인 사용 입 니 다. 네트워크 요청 기능 을 봉인 하여 전체적인 코드 를 더욱 간결 하고 명료 하 게 만 들 었 음 을 알 수 있 습 니 다.
4 OkHttp 의 기본 클래스 (인터페이스) 소개
위의 코드 에서 OkHttpClient, Call, Request 등 몇 가지 종류 가 나 왔 습 니 다. 이러한 노출 된 종 류 는 우리 의 사용 과 관련 되 기 때문에 다음 에 이런 종 류 를 보 여 줍 니 다.
OkHttpClient
OkHttp 의 사용 은 이러한 구축 에서 시작 되 었 습 니 다. Client 는 클 라 이언 트 의 뜻 이기 때문에 개인 적 으로 이런 유형의 본질은 OkHttp 를 사용 하 는 클 라 이언 트 에 대해 전문 적 인 맞 춤 형 제작 을 하 는 것 이 라 고 생각 합 니 다.
예 를 들다
new OkhttpClient.Builder()
.addInterceptor(loggingIntecepter)
.retryOnConnectionFailure(true)
.connectionTimeout(TIME_OUT, TimeUnit.SECONDS)
.readTimeout(TIME_OUT, TimeUnit.SECONDS)
.build();
OkHttpClient 의 구축 은 건설 자 모델 을 이용 했다. 이 모델 은 복잡 한 대상 의 구축 에 자주 사용 되 고 구축 한 세부 사항 을 봉인 하 며 구체 적 인 설명 은 나중에 하 자.
이 대상 의 구축 에서 차단기 추가 와 연결 재 시도 등 을 보 았 습 니 다. 원본 코드 에서 OkHttpClient 속성 을 살 펴 보면 대부분의 차단기 와 관련 된 설정 이 이 대상 에 설정 되 어 있 음 을 알 수 있 습 니 다.
Request
영어 번역문 에서 알 수 있 듯 이 이것 은 요청 과 관련 된 클래스 로 요청 URL 등 속성 을 포함한다.우 리 는 우리 가 방문 한 종 류 를 정의 하기 위해 서 이런 종류 가 필요 하 다.
예 를 들다
Request request = new Request.BUilder()
.url(url)
.build();
상기 예 에서 도 작성 자 모드 를 사 용 했 습 니 다. 그 중에서 하나의 url 속성 만 사 용 했 습 니 다. 그 밖 에 이 method (GET 와 POST 등), headers (요청 헤드), requestBody (요청 체) 와 tag 도 있 습 니 다.
Call
이 인 터 페 이 스 는 실제 요청 네트워크 의 인터페이스 로 현 류 는 RealCall 입 니 다. 그 구축 방식 은 간단 한 공장 모델 (하나의 매개 변 수 를 입력 하고 이 매개 변수 에 대응 하 는 대상 을 되 돌려 줍 니 다) 의 소스 코드 는 다음 과 같 습 니 다.
interface Factory {
Call newCall(Request request);
}
...
@Override
public Call newCall(Request request) {
return RealCall.newRealCall(this, request, false /* for web socket */);
}
구축 방식 은 위 에서 유도 할 수 있다.
client. newCall (request) / / 이전 두 가지 종 류 를 사 용 했 습 니 다.
이 인터페이스 와 그 실현 류 는 OkHttp 의 핵심 내용 으로 탐구 할 만 한 것 이 많 으 며 다음 절 에 이 글 을 자세히 분석 할 필요 가 있다.
작은 매듭
이 글 에서 우 리 는 먼저 HttpURLConnection 을 이용 하여 네트워크 요청 을 하 는 방법 을 간략하게 소개 한 다음 에 OkHttp 의 간단 한 사용 과 사용 과정 에서 어떤 종 류 를 만 나 는 지 소개 했다.
우 리 는 OkHttp 에 대해 작은 입문 을 한 셈 이다. 다음 절 은 OkHttp 의 실행 절 차 를 깊이 있 게 해석 하기 시작한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OKHttp (1) 기본 사용OkHttp 는 현재 비교적 뛰어난 네트워크 통신 라 이브 러 리 로 원생 의 HTTPURLConnection 을 대체 할 수 있 고 Http / SPDY 를 지원 하 며 간단 하고 사용 하기 쉬 우 며 확장 성 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.