안드로이드 httpurlconnection 예제

이 튜토리얼은 자바의 HttpURLConnection 라이브러리와 안드로이드의 비동기 작업 라이브러리를 사용하여 HTTP POST를 완료하는 방법을 보여줍니다. 비동기의 의미와 HTTP의 작동 방식을 이미 알고 있다고 가정하면 이러한 라이브러리에 대해 설명합니다. activity_main.xml, 그것은 이미 당신을 위해 만든 경우 다음으로 코드를 대체 당신이 안드로이드 스튜디오에서 프로젝트를 만들 때, 그렇지 않으면 그냥 레이아웃 폴더 uner res에이 파일을 만들. 이 메서드는 API 수준 15에서 더 이상 사용되지 않습니다. 인스턴스 특정 setRequestProperty 메서드는 URLConnection의 적절 한 인스턴스를 얻은 후 사용 해야 합니다. 이 방법을 호출하는 것은 효과가 없습니다. . . 이 URLConnection에서 참조하는 리소스에 대한 통신 링크를 열 때 사용할 지정된 시간 지정 값을 밀리초 단위로 설정합니다. HTTP 리디렉션(3xx)이 자동으로 따라야 하는지 여부를 나타내는 부울을 반환합니다. 기본적으로 HttpURLConnection의 이 구현은 서버가 gzip 압축을 사용하도록 요청하고 URLConnection.getInputStream()의 호출자에 대한 데이터를 자동으로 압축 해제합니다. 이 경우 콘텐츠 인코딩 및 콘텐츠 길이 응답 헤더가 지워집니다.

Gzip 압축 요청 헤더에 허용 된 인코딩을 설정 하 여 비활성화할 수 있습니다.: 지금, 콜백을 얻을 하려는 활동 또는 조각의 내부 다음 수행: 그것에 바로 점프… 다음은 HttpURLConnection 클래스를 사용하여 URL을 연 다음 읽는 방법을 보여 주는 완전한 Java 클래스의 소스 코드입니다. 이 클래스는 또한 URLEncoder 클래스의 인코딩 메서드를 사용 하 여 URL을 제대로 인코딩 하는 방법을 보여 줍니다. 이제 사용할 콜백이 있으므로 HttpPostAsyncTask를 조정하여 사용해야합니다. 최상의 성능을 위해 본체 길이가 미리 알려진 경우 setFixedLengthStreamingMode(int) 또는 설정청키드StreamingMode(int)를 호출해야 합니다. 그렇지 않으면 HttpURLConnection이 전송되기 전에 메모리에서 전체 요청 본문을 버퍼링해야하며 힙을 낭비하고 대기 시간이 증가합니다. . . 키-값 쌍으로 지정된 일반 요청 속성을 추가합니다. .

참고: fixedContentLengthLong은 더 큰 콘텐츠 길이를 설정할 수 있으므로 이 필드 대신 권장됩니다. . 일종의 사용자 지정 콜백을 사용하는 경우 모든 종류의 UI 업데이트를 수행하기 전에 UI 스레드를 얻어야 합니다. 다음과 같이 이 작업을 수행할 수 있습니다. 연결에 실패했지만 서버가 유용한 데이터를 보낸 경우 오류 스트림을 반환합니다. 일반적인 예는 HTTP 서버가 404로 응답하여 FileNotFoundException이 연결에 throw되지만 서버가 수행할 작업과 관련하여 제안사항이 포함된 HTML 도움말 페이지를 보낸 경우입니다. HTTP 응답에서 오류가 발생했음을 나타내는 경우 URLConnection.getInputStream()은 IOException을 throw합니다. getErrorStream())를 사용하여 오류 응답을 읽습니다. 헤더는 URLConnection.getHeaderFields()를 사용하여 일반적인 방법으로 읽을 수 있습니다.

프로그래밍 생활을 조금 더 쉽게. 이 클래스에는 IPv6에 대한 투명한 지원이 포함됩니다. IPv4 및 IPv6 주소가 모두 있는 호스트의 경우 연결이 설정될 때까지 호스트의 각 주소에 연결하려고 시도합니다. 대기 시간을 줄이기 위해 이 클래스는 여러 요청/응답 쌍에 대해 동일한 기본 소켓을 다시 사용할 수 있습니다.