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

回到顶部