Java Jersy服务不接受gzip编码的请求

Java Jersy服务不接受gzip编码的请求,java,jersey,Java,Jersey,您好,这是接收JSON和响应JSON的web方法,但问题是此web方法不接受gzip编码的请求,因此如何使其成为gzip可接受的web方法 @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @Path("/pdf2doc") public RPDOC postDocument(DPDF dpdf){ } DPDF是一个类 public class DPDF{ public S

您好,这是接收JSON和响应JSON的web方法,但问题是此web方法不接受gzip编码的请求,因此如何使其成为gzip可接受的web方法

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/pdf2doc")
public RPDOC postDocument(DPDF dpdf){
}
DPDF是一个类

public class DPDF{   
public String docid;
public String pdfdata;    
}
这是使用gzip内容编码和抛出exeption的客户机代码

               String body = "{\"docid\": 1234, \"docdata\": \"test\"}";


               HttpEntity httpEntity =  EntityBuilder.create().setText(body)
                                        .setContentEncoding("gzip")
                                       .gzipCompress().build();

                 final String postUrl = serviceURL;
                 HttpUriRequest request = RequestBuilder.post(postUrl)
                                    .setHeader(HttpHeaders.CONTENT_TYPE, 
                                        "application/json")
                                    .setHeader(HttpHeaders.ACCEPT, 
                                        "application/json")
                                    .setEntity(httpEntity)
                                    .build();

        String sResponse = null;

        try (CloseableHttpClient httpclient = HttpClientBuilder.create().build();
             CloseableHttpResponse response = httpclient.execute(request))
        {
            StatusLine sl = response.getStatusLine();

                int statusCode = sl.getStatusCode();
                System.out.println("HTTP Status: " + statusCode);

               HttpEntity entity = response.getEntity();
               if (entity != null)
               {
                sResponse = EntityUtils.toString(entity).trim();
                System.out.println("HTTP Body:\n" + sResponse);

                EntityUtils.consumeQuietly(entity);
               }
               }
        catch (Exception e)
        {
            request.abort();
            throw e;
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

Gzip格式,看起来您正在尝试将文件上载到RESTAPI。在这种情况下,您的API应该使用多部分请求。检查exampleVikas-我可以将文件数据发布到数据中,没有任何问题,一切正常,如果我设置“Content Encoding”:gzip,请求将崩溃,并出现此错误“java.net.SocketException:软件导致的连接中止:套接字写入错误”我认为您的客户端代码中存在一些问题,你能粘贴你的客户端代码吗?Viakas-如果我在客户端设置了“Content Encoding:gzip”,那么我应该在Jersey服务中更改任何内容以接受压缩的JSON吗?Vikas-刚刚用客户端代码gzip格式更新了这个问题,看起来你正在尝试将文件上载到REST API。在这种情况下,您的API应该使用多部分请求。检查exampleVikas-我可以将文件数据发布到数据中,没有任何问题,一切正常,如果我设置“Content Encoding”:gzip,请求将崩溃,并出现此错误“java.net.SocketException:软件导致的连接中止:套接字写入错误”我认为您的客户端代码中存在一些问题,你能粘贴你的客户端代码吗?Viakas-如果我在客户端设置了“Content Encoding:gzip”,那么我应该在Jersey服务中更改任何内容以接受压缩JSON吗?Vikas-刚刚用客户端代码更新了问题