java - 如何模拟 Zip 文件的 HTTP 响应 - 获取 java.io.EOFException
问题描述
我试图模拟 zip 文件的 http 响应,com.github.paweladamski:HttpClientMock:1.8.1
但我java.io.EOFException
在下载 http 响应时得到了,看起来流中没有数据可供使用。我可能做错了什么。你能就这个问题提出任何线索吗?请随意建议任何其他可以解决此问题的模拟客户端 - 要求是模拟 zip 文件的 http 响应。
示例代码
Action action = new Action() {
@Override
public HttpResponse getResponse(Request request) throws IOException {
BasicHttpResponse response = new BasicHttpResponse(new ProtocolVersion("http", 1, 1), status, statusMessage);
FileEntity entity = new FileEntity(new File("C:/sample-response.zip"));
response.setEntity(entity);
return response;
}
};
HttpClientMock httpClientMock = new HttpClientMock();
Unirest.config().httpClient(ApacheClient.builder(httpClientMock));
httpClientMock.onGet("http://example.com").doAction(action);
// Rest Request Initiated
// Used code to download
HttpGet httpGet = new HttpGet(downloadLocation);
httpGet.addHeader(AUTHORIZATION, "TOKEN");
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
LOGGER.info("** Stream length '{}'", content.available()); // 'content.available()' throwing java.io.EOFException
异常堆栈跟踪
java.io.EOFException
at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:268)
at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:258)
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:79)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
at org.apache.http.client.entity.GZIPInputStreamFactory.create(GZIPInputStreamFactory.java:61)
at org.apache.http.client.entity.LazyDecompressingInputStream.initWrapper(LazyDecompressingInputStream.java:51)
at org.apache.http.client.entity.LazyDecompressingInputStream.available(LazyDecompressingInputStream.java:86)
Maven 详细信息
HttpClientMock
- 1.8.1
解决方案
推荐阅读
- android - 如何将数据从一个 Fragment 传输到另一个 Fragment?
- ruby-on-rails - 在 Rails 中使用具有活动管理员的 I18n
- assembly - NASM 如何为每个标签分配如此多的内存
- amazon-web-services - 从 ECS 访问 Elasticache Redis
- javascript - 如何在 Firefox 中捕获“授予私有 Windows 权限”事件?
- node.js - 如何从 AWS MWS API json 响应下载 .xlsx 文件?
- node.js - 如何处理 redis-node 中的数据库索引超出范围错误?
- google-cloud-platform - 如何限制从外部 GCP 访问 API Gateway?
- google-cloud-build - Cloudbuild - 使用来自不同步骤的自定义变量构建 docker 映像
- symfony - 无法序列化 Symfony\Component\Cache\Adapter\AbstractAdapter