Java Jersy服务不接受gzip编码的请求
您好,这是接收JSON和响应JSON的web方法,但问题是此web方法不接受gzip编码的请求,因此如何使其成为gzip可接受的web方法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
@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-刚刚用客户端代码更新了问题