我正在尝试从服务器获取数据,我需要显示服务器证书才能完成这项工作,所以我包含如下服务器证书,但我收到以下错误:
线程"main"中的异常 java.lang.错误:未解决的编译问题:
The constructor HttpHeaders() is not visible
The constructor HttpEntity<String>() is not visible
我的pom文件:
<properties>
<spring.version>4.1.0.RELEASE</spring.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
</dependencies>
我的java文件:
public static void main( String[] args ) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException, KeyManagementException, UnrecoverableKeyException
{
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(new FileInputStream("/Users/workspace/a/cert.cer"),
"password".toCharArray());
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
new SSLContextBuilder()
.loadTrustMaterial(null, new TrustSelfSignedStrategy())
.loadKeyMaterial(keyStore, "changeit".toCharArray()).build());
HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/xml");
HttpEntity<String> entity = new HttpEntity<String>();
ResponseEntity<String> response = restTemplate.exchange(
"https://www.example.com",
HttpMethod.GET, entity, String.class);
System.out.println( "Hello World!" );
}
org.apache.http中没有HttpHeaders
和HttpEntity
的公共构造函数。因此不能创建这些对象。此外,HttpEntity
是一个接口。
也许你导入了错误的类。