Java中带有HTTPClient的GZip POST请求
我需要将POST请求发送到包含gzip压缩请求参数的Web服务器。我使用的是Apache
HttpClient,我已经读到它支持开箱即用的Gzip,但是我找不到任何有关如何做我需要的示例。如果有人可以发布一些示例,我将不胜感激。
回答:
您需要先将其String
转换为gzip
byte[]
或(临时)File
。我们假设它不是一个很大的String
值,所以byte[]
对于可用的JVM内存足够安全:
String foo = "value";ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (GZIPOutputStream gzos = new GZIPOutputStream(baos)) {
gzos.write(foo.getBytes("UTF-8"));
}
byte[] fooGzippedBytes = baos.toByteArray();
然后,可以使用HttpClient将其作为多部分主体发送,如下所示:
MultipartEntity entity = new MultipartEntity();entity.addPart("foo", new InputStreamBody(new ByteArrayInputStream(fooGzippedBytes), "foo.txt"));
HttpPost post = new HttpPost("http://example.com/some");
post.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
// ...
请注意,HttpClient 4.1支持新功能ByteArrayBody
,其用法如下:
entity.addPart("foo", new ByteArrayBody(fooGzippedBytes, "foo.txt"));
以上是 Java中带有HTTPClient的GZip POST请求 的全部内容, 来源链接: utcz.com/qa/427316.html