programing

Android Client에서 서버로 GZIP 압축 JSON을 전송할 때 사용해야 하는 헤더는 무엇입니까?

newnotes 2023. 3. 31. 22:41
반응형

Android Client에서 서버로 GZIP 압축 JSON을 전송할 때 사용해야 하는 헤더는 무엇입니까?

이 질문은 이 질문의 연장선상에 있습니다.아래 코드를 사용하여 GZIP을 압축합니다.JSONObject.

String foo = "value";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzos = null;

try {
    gzos = new GZIPOutputStream(baos);
    gzos.write(foo.getBytes("UTF-8"));
} finally {
    if (gzos != null) try { gzos.close(); } catch (IOException ignore) {};
}

byte[] fooGzippedBytes = baos.toByteArray();

사용하고 있다DefaultHttpClient이 압축된 JSONObject를 서버로 보냅니다(코드는 내가 제어할 수 있습니다).

나의 질문

어떤 헤더를 사용해야 합니까?request사용하고 있습니다.request.setHeader("Content-type", "application/json");JSON을 서버로 전송하기 위해?

gzip 인코딩된 데이터를 전송하고 있음을 서버에 통지하려면 Accept-Encoding이 아닌 Content-Encoding 헤더를 전송합니다.

답변은 압축된 데이터를 전송하고 있음을 나타내는 헤더를 설정해야 함을 나타냅니다.

HttpUriRequest request = new HttpGet(url);
request.addHeader("Content-Encoding", "gzip");
// ...
httpClient.execute(request);

이 답변은 수신 압축 데이터를 처리하는 방법도 보여줍니다.

  • Content-Type:application/json- http 콜의 콘텐츠 데이터 유형을 나타냅니다.
  • Content-Encoding: gzip- 어떤 압축이 사용되는지 나타냅니다.

application/json또는text/xml또는 다른 타입은 gzip으로 압축하여 수신자에게 전송하고Content-Type헤더만, 수신기는 착신 데이터의 타입을 식별합니다.json/xml/text그런 다음 json/xml/text 유형의 개체로 다시 변환합니다.

와 함께Content-Encodingheader only receiver는 수신 데이터가 gzip 압축되고 있음을 식별합니다.수신기는 수신 데이터를 압축 해제하고 사용해야 합니다.

언급URL : https://stackoverflow.com/questions/11414987/what-header-should-be-used-for-sending-gzip-compressed-json-from-android-client

반응형