Java如何在HttpClient中获取实体ContentType?
此代码段向您展示如何获取执行HttpGet请求的结果的内容类型。在ContentType可以通过使用获得的ContentType.getOrDefault()方法以及使HttpEntity作为参数。在HttpEntity可以从获得HttpResponse的对象。
从ContentType对象中,我们可以通过调用getMimeType()方法获得mime类型。此方法将返回一个字符串值。为了获得字符集,我们可以调用getCharset()将返回一个java.nio.charset.Charset对象的方法。
package org.nhooo.example.httpclient;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.HttpClientBuilder;
import java.io.IOException;
import java.nio.charset.Charset;
public class EntityContentType {
public static void main(String[] args) {
EntityContentType demo = new EntityContentType();
demo.getContentType("http://www.google.com");
demo.getContentType("http://www.google.com/images/srpr/logo3w.png");
}
public void getContentType(String url) {
try {
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
showContentType(entity);
} catch (IOException e) {
e.printStackTrace();
}
}
private void showContentType(HttpEntity entity) {
ContentType contentType = ContentType.getOrDefault(entity);
String mimeType = contentType.getMimeType();
Charset charset = contentType.getCharset();
System.out.println("MimeType = " + mimeType);
System.out.println("Charset = " + charset);
}
}我们的代码片段的输出是:
MimeType = text/html Charset = ISO-8859-1 MimeType = image/png Charset = null
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.jar -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>