Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Wiremock-gzip;是否忽略放气标题?_Java_Wiremock - Fatal编程技术网

Java Wiremock-gzip;是否忽略放气标题?

Java Wiremock-gzip;是否忽略放气标题?,java,wiremock,Java,Wiremock,我正在使用Wiremock编写一个简单的单元测试,以测试我的http客户端是否可以根据需要禁用gzip压缩。 我面临的问题是,wiremock似乎忽略了接受编码:gzip,deflate头。 下面是一个简单的测试用例: @测试 public void getContentWithGZIP()引发异常{ WireMockServer WireMockServer=新的WireMockServer(wireMockConfig().port(8060)); wireMockServer.start(

我正在使用Wiremock编写一个简单的单元测试,以测试我的http客户端是否可以根据需要禁用gzip压缩。 我面临的问题是,wiremock似乎忽略了接受编码:gzip,deflate头。 下面是一个简单的测试用例:

@测试
public void getContentWithGZIP()引发异常{
WireMockServer WireMockServer=新的WireMockServer(wireMockConfig().port(8060));
wireMockServer.start();
wireMockServer.stubFor(post(urlEqualTo(“/gzip响应”)).willReturn(aResponse().withBody(“body text”));
HttpClient HttpClient=HttpClientBuilder.create().build();
HttpPost HttpPost=新的HttpPost(“http://localhost:8060/gzip-答复”);
StringEntity=新的StringEntity(“{payload:null}”);
httpPost.setEntity(实体);
HttpResponse response=httpClient.execute(httpPost);
HttpEntity HttpEntity=response.getEntity();
debug(“response={}”,EntityUtils.toString(httpEntity));
Arrays.asList(response.getAllHeaders()).stream().forEach(header->logger.debug(“header={}value={}”、header.getName()、header.getValue());
Header contentEncodingHeader=response.getFirstHeader(“内容编码”);
Assert.assertEquals(“gzip”,contentEncodingHeader.getValue());
}
我正在使用wiremock 2.5和ApacheHTTP客户端4.4.1 在调试级别使用apache客户端运行测试时,我可以看到数据“在线”。 我可以看到请求包含“接受编码”标题

但是响应缺少
内容编码
一个:

16:01:23.620 DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
16:01:23.621 DEBUG org.apache.http.wire - http-outgoing-0 << "Transfer-Encoding: chunked[\r][\n]"
16:01:23.621 DEBUG org.apache.http.wire - http-outgoing-0 << "Server: Jetty(9.2.13.v20150730)[\r][\n]"
16:01:23.621 DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
16:01:23.621 DEBUG org.apache.http.wire - http-outgoing-0 << "9[\r][\n]"

16:01:23.620 DEBUG org.apache.http.wire-http-outgoing-0这是因为默认情况下
HttpClient
会为您执行解压缩,当它执行解压缩时,会从
响应
对象中删除这些头

请参阅此处,其中将在ResponseContentEncoding.java行上删除标题


这提供了另一个团队如何处理相同场景的历史记录。

这是因为默认情况下,
HttpClient
会为您进行解压缩,并且在解压缩时会从
响应
对象中删除这些头

请参阅此处,其中将在ResponseContentEncoding.java行上删除标题


这提供了另一个团队如何处理相同场景的历史记录。

格式良好的答案更多地关注stackoverflow,请参阅此处,了解如何格式化您的答案以使其突出,特别是如何正确添加链接。@KaiPi我不确定您是否发现了原因,在我的帖子中,我记录的是连线,而不是响应标题。Y你是对的,响应标题被删除了,但我认为它们应该记录在wireWell格式的答案上。更多注意stackoverflow,请参阅此处,了解如何格式化你的答案以使其突出,特别是如何正确添加链接。@KaiPi我不确定你是否发现了原因,在我的帖子中,我记录的是wire,而不是你是对的,响应头被删除了,但是我认为它们应该被在线记录
16:01:23.620 DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 200 OK[\r][\n]"
16:01:23.621 DEBUG org.apache.http.wire - http-outgoing-0 << "Transfer-Encoding: chunked[\r][\n]"
16:01:23.621 DEBUG org.apache.http.wire - http-outgoing-0 << "Server: Jetty(9.2.13.v20150730)[\r][\n]"
16:01:23.621 DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
16:01:23.621 DEBUG org.apache.http.wire - http-outgoing-0 << "9[\r][\n]"