Http 클라이언트와 httpurl 연결의 차이점
빈 프레임워크 소스 코드에 대한 연구에서 HTTP 요청 사용과 안드로이드에서 더 흥미로운 것으로 나타났습니다.
버전 2.3 이상, HttpURLConnection 사용 및 Android
2.2 이하 버전에서는 http 클라이언트를 사용합니다. 나도 이렇게 쓰는 이유가 궁금해서 구글 엔지니어가 쓴 블로그를 찾았다.
HTTPURL 연결과 HTTP 클라이언트를 비교해 보겠습니다. 간단히 번역해 드리겠습니다.
원래 주소:/2011/09/androids-. 가장 많이 사용되는 가장 중요한 프로토콜로, 점점 더 많은 Java 애플리케이션이 HTTP 를 직접 통과해야 합니다.
네트워크 리소스에 액세스하는 프로토콜입니다. HTTP 프로토콜 (HttpURLConnection) 에 액세스하는 기본 기능은 JDK 의 java.net 패키지에서 이미 제공됩니다.
HttpURLConnection 은 URLConnection 에서 상속되는 Java 의 표준 클래스이며 지정된 웹 사이트에 GET 및 POST 요청을 보내는 데 사용할 수 있습니다. URLConnection 을 기반으로 다음과 같은 편리한 방법을 제공합니다.
Int getResponseCode (): 서버의 응답 코드를 가져옵니다.
String getResponseMessage (): 서버의 응답 메시지를 가져옵니다.
String getResponseMethod (): 요청을 보내는 메서드를 가져옵니다.
Voidsettrequestmethod (문자열 메소드): 요청을 보내는 메소드를 설정합니다.
일반적으로 요청을 제출하고 서버에서 응답을 받기 위해 간단한 웹 사이트 페이지만 필요한 경우 HTTPURL 연결이 완벽하게 작동합니다. 하지만 대부분의 경우,
어쨌든, 한 사이트의 페이지는 그렇게 간단하지 않을 수도 있다. 이러한 페이지는 간단한 URL 을 통해 액세스할 수 없습니다. 사용자는 로그인하여 페이지에 액세스할 수 있는 적절한 권한이 필요할 수 있습니다. 이왕이면
다음으로 세션과 쿠키를 처리해야 합니다. 만약 당신이 HTTPURL 접속으로 이러한 세부 사항을 처리하려고 한다면, 물론 가능합니다. 그냥 처리만 하세요. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언)
오기가 어려울 것이다.
세션 및 쿠키와 같은 세부 사항을 포함하여 웹 사이트에 대한 요청을 더 잘 처리하기 위해 Apache 오픈 소스 조직은 HttpClient 프로젝트를 제공하고 이를 봅니다
이름에서 알 수 있듯이 브라우저가 아닌 간단한 HTTP 클라이언트로서 HTTP 요청을 보내고 HTTP 응답을 수신하는 데 사용할 수 있습니다. 그러나 서버의 응답은 캐시되지 않으며 HTML 페이지를 실행할 수 없습니다.
표면에 포함된 자바스크립트 코드 페이지 내용을 분석하거나 처리하지 않습니다.
간단히 말해서, HTTP 클라이언트는 HttpPurlConnection 의 향상된 버전으로, HttpPurlConnection 이 할 수 있는 대로 한다.
Http 클라이언트는 무엇이든 할 수 있습니다. HTTPURL 연결은 일부 함수를 제공하지 않고 HTTP 클라이언트도 제공하지만 요청 전송 방법에만 초점을 맞추고 있습니다.
수신
HTTP 접속에 응답하고 관리합니다.
Http 클라이언트를 사용하여 요청을 보내고 응답을 받는 것은 간단합니다. 다음 단계만 완료하면 됩니다.
HttpClient 객체를 만듭니다.
GET 요청을 보내야 하는 경우 HttpGet 객체를 만듭니다. POST 요청을 보내야 하는 경우 HttpPost 객체를 만듭니다.
요청 매개 변수를 보내야 하는 경우 HttpGet 및 HttpPost*** 와 동일한 setParams(HetpParams params) 메서드를 호출하여 요청 매개 변수를 추가할 수 있습니다. HttpPost 객체의 경우 setentity (httpentity) 메서드를 호출하여 요청 매개 변수를 설정할 수도 있습니다.
HttpClient 객체의 execute(HttpUriRequest 요청) 를 호출하여 요청을 보내고 이 메서드를 실행하여 HttpResponse 를 반환합니다.
조정
HttpResponse 의 getAllHeaders (), getHeaders (문자열) 를 사용합니다
Name) 및 기타 방법은 서버의 응답 헤더를 얻을 수 있습니다. HttpResponse 의 getEntity () 메서드를 호출하여 래퍼 서버의 HttpEntity 객체를 가져옵니다.
의 응답 내용입니다. 프로그램은 이 개체를 통해 서버의 응답 내용을 얻을 수 있습니다.
또한 Android 는 HTTP 클라이언트를 성공적으로 통합했습니다. 즉, 개발자는 Android 응용 프로그램에서 HTTP 클라이언트를 직접 사용하여 제출 요청에 액세스하고 응답을 받을 수 있습니다.
예를 들어, Android 응용 프로그램은 지정된 페이지에 요청을 보내야 하지만 이 페이지는 단순한 페이지가 아니며 사용자가 로그인하고 로그인한 사용자의 사용자 이름이 유효한 경우에만 액세스할 수 있습니다. HTTPURL 연결을 사용하여 이 보호된 페이지에 액세스하는 경우 처리해야 할 세부 사항이 너무 복잡합니다.
실제로 브라우저를 사용하여 웹 응용 프로그램에서 보호된 페이지에 쉽게 액세스할 수 있습니다. 사용자가 시스템에서 제공하는 로그인 페이지를 통해 시스템에 로그인하면 브라우저는 서버와의 세션을 유지 관리합니다. 사용자의 로그인 사용자 이름과 암호가 요구 사항을 충족하면 보호된 자원에 액세스할 수 있습니다.
안드로이드 응용 프로그램에서는 HTTP 클라이언트를 사용하여 시스템에 로그인할 수 있습니다. 응용 프로그램이 동일한 http 클라이언트를 사용하여 요청을 보낼 때마다 http 클라이언트는 다음을 수행합니다
서버와의 세션 상태를 자동으로 유지 관리합니다. 즉, 프로그램이 처음으로 HTTP 클라이언트를 사용하여 시스템에 로그인한 후 HTTP 클라이언트를 사용하여 보호된 페이지에 액세스할 수 있습니다.
네.