HttpsURLConnection GET 요청에 대한 인코딩 된 응답 수신

TheFlanman91

Java 클래스 HttpsURLConnection을 사용하여 웹 페이지에 연결하고 JSoup을 사용하여 HTML 응답을 구문 분석하는 Android 앱에서 작업 중입니다. 문제는 웹 사이트의 HTML 응답이 인코딩 된 것처럼 보인다는 것입니다. 실제 HTML을 얻기 위해 무엇을 할 수 있는지에 대한 아이디어가 있습니까?

다음은 웹 사이트에 연락하기위한 코드입니다.

private String GetPageContent(String url) throws Exception {

        URL obj = new URL(url);
        conn = (HttpsURLConnection) obj.openConnection();

        // default is GET
        conn.setRequestMethod("GET");

        conn.setUseCaches(false);

        // act like a browser
        conn.setRequestProperty("User-Agent", USER_AGENT);
        conn.setRequestProperty("Accept",
                "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
        conn.setRequestProperty("Accept-Language", "en-US,en;q=0.8,en-GB;q=0.6");
        conn.setRequestProperty("Accept-Encoding" , "gzip, deflate, sdch");
        conn.setRequestProperty("Connection" , "keep-alive");

        if (cookies != null) {
            for (String cookie : this.cookies) {
                conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
            }
        }
        int responseCode = conn.getResponseCode();
        Log.v(TAG,"\nSending 'GET' request to URL : " + url);
        Log.v(TAG,"Response Code : " + responseCode);

        BufferedReader in = new BufferedReader(new InputStreamReader(
                conn.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        // Get the response cookies
        setCookies(conn.getHeaderFields().get("Set-Cookie"));

        return response.toString();

    }

그리고 응답의 일부 :

��������������]�r�6��۞�w@ՙ�NDQ�ﱥ|�siv�Kkw�m&�HH�M,  Z��ff_c_o�d�@���9�l�6����� �_=w|����/A{��!W� LZ��������f]�=wc߽�2,˨�|�8x��~�}�x1�$Ib�Uq�7�j�X|;��K

수정 : HTML은 여기 요청 헤더에 표시된대로 GZIP으로 인코딩 되었습니다 .

이 문제에 대한 해결책은 아래와 같이 GZIPInputStream 클래스 를 사용하는 것입니다 .

BufferedReader in = new BufferedReader(new InputStreamReader(
                new GZIPInputStream(conn.getInputStream())));
TmKVU

요청과 함께 반환 된 헤더를 기반으로 콘텐츠가 gzip을 사용하여 인코딩된다는 결론을 내릴 수 있습니다. 다행히 GZIPInputStream 클래스를 사용하여 gzip 인코딩 스트림을 디코딩하는 쉬운 방법이 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

스캐 폴드 페이지에 대한 Grails 잘못된 응답 인코딩

분류에서Dev

e GET 요청에 대한 JSON 응답의 여러 항목 인쇄

분류에서Dev

Firebase 함수에 대한 POST 요청에 대한 응답 캐싱

분류에서Dev

요청한 IP 주소에 대해 인증 된 응답을 받았는지 어떻게 확인할 수 있습니까?

분류에서Dev

403 JSONP 요청에 대한 금지 된 응답

분류에서Dev

전송 인코딩이 청크 될 때 HttpsUrlconnection을 사용하여 응답을 읽는 방법

분류에서Dev

UTF-8 응답 인코딩 문제에 대한 Spring 쓰기

분류에서Dev

UTF-8 응답 인코딩 문제에 대한 Spring 쓰기

분류에서Dev

JSON 문제에 대한 PHP MySQL 쿼리 응답 인코딩

분류에서Dev

Clojure 링에 대한 Angular POST는 프리 플라이트에 대한 응답을 수신하는 데 잘못된 HTTP 상태 코드 404가 있습니다.

분류에서Dev

웹 서비스에 대한 요청과 응답을 동일하게 인코딩해야합니까?

분류에서Dev

Zappa + Flask : '/'에 대한 GET 요청이 502 응답 코드를 생성했습니다.

분류에서Dev

Angular 2의 HTTP GET은 로그인을 위해 HTTP POST에서 수신 된 응답을 트리거합니다.

분류에서Dev

응답 엔터티에 대한 mockito 단위 테스트 케이스는 HTTP GET 요청을 수행

분류에서Dev

응답 상태 코드 400 : 대용량 데이터 게시로 인한 잘못된 요청 (httpclient)

분류에서Dev

작동 할 Ping 명령에 대한 ARP 요청 / 응답 수

분류에서Dev

요청에 대한 응답이 Service Worker에서 왔는지 어떻게 확인할 수 있습니까?

분류에서Dev

엔드 포인트가 인수를받을 때 프리 플라이트 요청에 대한 CORS 응답

분류에서Dev

Axios-Get () 요청에 삽입 된 값을 어떻게 인코딩 할 수 있습니까?

분류에서Dev

JSON 응답에 대한 SED 잘못된 명령 코드

분류에서Dev

잘못된 기존 데이터에 대한 RESTful 응답 코드?

분류에서Dev

laravel에서 반환 된 응답을 인코딩하는 방법

분류에서Dev

.NET의 API에서 GET 요청에 대한 IP를 인코딩하는 방법

분류에서Dev

PDO에 대한 매개 변수를 바인딩 한 후 응답 배열 빌드

분류에서Dev

http : // localhost : 3000 / api / stuff에 대한 HTTP 실패 응답 : 400 잘못된 요청

분류에서Dev

Restlet에서 캐시 된 요청 (ETag)에 대해 304 응답을 수동으로 반환해야합니까?

분류에서Dev

discord API에 대한 Axios GET 요청은 403 금지 된 응답을 제공하지만 Postman에서 작동합니다.

분류에서Dev

Google App Script에 대한 jquery 게시물에서 수신 된 응답 데이터가 없습니다.

분류에서Dev

각도로 get 요청에 대한 응답 헤더 가져 오기

Related 관련 기사

  1. 1

    스캐 폴드 페이지에 대한 Grails 잘못된 응답 인코딩

  2. 2

    e GET 요청에 대한 JSON 응답의 여러 항목 인쇄

  3. 3

    Firebase 함수에 대한 POST 요청에 대한 응답 캐싱

  4. 4

    요청한 IP 주소에 대해 인증 된 응답을 받았는지 어떻게 확인할 수 있습니까?

  5. 5

    403 JSONP 요청에 대한 금지 된 응답

  6. 6

    전송 인코딩이 청크 될 때 HttpsUrlconnection을 사용하여 응답을 읽는 방법

  7. 7

    UTF-8 응답 인코딩 문제에 대한 Spring 쓰기

  8. 8

    UTF-8 응답 인코딩 문제에 대한 Spring 쓰기

  9. 9

    JSON 문제에 대한 PHP MySQL 쿼리 응답 인코딩

  10. 10

    Clojure 링에 대한 Angular POST는 프리 플라이트에 대한 응답을 수신하는 데 잘못된 HTTP 상태 코드 404가 있습니다.

  11. 11

    웹 서비스에 대한 요청과 응답을 동일하게 인코딩해야합니까?

  12. 12

    Zappa + Flask : '/'에 대한 GET 요청이 502 응답 코드를 생성했습니다.

  13. 13

    Angular 2의 HTTP GET은 로그인을 위해 HTTP POST에서 수신 된 응답을 트리거합니다.

  14. 14

    응답 엔터티에 대한 mockito 단위 테스트 케이스는 HTTP GET 요청을 수행

  15. 15

    응답 상태 코드 400 : 대용량 데이터 게시로 인한 잘못된 요청 (httpclient)

  16. 16

    작동 할 Ping 명령에 대한 ARP 요청 / 응답 수

  17. 17

    요청에 대한 응답이 Service Worker에서 왔는지 어떻게 확인할 수 있습니까?

  18. 18

    엔드 포인트가 인수를받을 때 프리 플라이트 요청에 대한 CORS 응답

  19. 19

    Axios-Get () 요청에 삽입 된 값을 어떻게 인코딩 할 수 있습니까?

  20. 20

    JSON 응답에 대한 SED 잘못된 명령 코드

  21. 21

    잘못된 기존 데이터에 대한 RESTful 응답 코드?

  22. 22

    laravel에서 반환 된 응답을 인코딩하는 방법

  23. 23

    .NET의 API에서 GET 요청에 대한 IP를 인코딩하는 방법

  24. 24

    PDO에 대한 매개 변수를 바인딩 한 후 응답 배열 빌드

  25. 25

    http : // localhost : 3000 / api / stuff에 대한 HTTP 실패 응답 : 400 잘못된 요청

  26. 26

    Restlet에서 캐시 된 요청 (ETag)에 대해 304 응답을 수동으로 반환해야합니까?

  27. 27

    discord API에 대한 Axios GET 요청은 403 금지 된 응답을 제공하지만 Postman에서 작동합니다.

  28. 28

    Google App Script에 대한 jquery 게시물에서 수신 된 응답 데이터가 없습니다.

  29. 29

    각도로 get 요청에 대한 응답 헤더 가져 오기

뜨겁다태그

보관