发布gzip压缩json到泽西服务

时间:2017-09-29 04:34:22

标签: java jersey jersey-client

Jersey webmethod接收json并返回json,我创建了一个客户端,用gzip编码发布json,我不知道它是正确的方式来编码json发布,我想确认请求正文是真的压缩不是吗?

这是球衣webmethod

 @POST
 @Produces(MediaType.APPLICATION_JSON)
 @Consumes(MediaType.APPLICATION_JSON)
 @Path("/getgzip")
 public RPGZIP postDocument(RGZIP gzip){         
     RPGZIP _response = new RPGZIP();
     _response.rpid = gzip.docid;
     _response.rpdata = gzip.docdata; 
     return _response;
 }

这是消耗球衣的客户端类

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Response;
import com.gzip.RGZIP;
import org.glassfish.jersey.message.GZipEncoder;
public class rclient {
public static void main(String[] args){
     String REST_URI   = 
    "http://localhost:8084/TestGZip/webresources/gzip/getgzip";  
     Client client = ClientBuilder.newClient();
     client.register(GZipEncoder.class);
     RGZIP rzip = new RGZIP();
     rzip.docid = 1234;
     rzip.docdata = "Working..";         
     Response r =   
          client.target(REST_URI).request(MediaType.APPLICATION_JSON)
          .post(Entity.entity(rzip, MediaType.APPLICATION_JSON));
     System.out.println(r.readEntity(String.class));
}
}

1 个答案:

答案 0 :(得分:0)

要知道您的请求已被压缩,必须有一个请求标头,如Content-Encoding: gzip发送到服务器,以便服务器知道他们必须解压缩有效负载

您在代码中所做的是正确的。