springmvc中restTemplate發送https請求

public static void main(String[] args) {
		String result = "";
		try{
			//rest忽略證書訪問
		    HttpComponentsClientHttpRequestFactory factory = new                                                    
		            HttpComponentsClientHttpRequestFactory();
		        factory.setConnectionRequestTimeout(1000);
		        factory.setConnectTimeout(1000);
		        factory.setReadTimeout(1000);
		        // https
		        SSLContextBuilder builder = new SSLContextBuilder();
		        builder.loadTrustMaterial(null, (X509Certificate[] x509Certificates, String s) -> true);
		        SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(builder.build(), new String[]{"SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.2"}, null, NoopHostnameVerifier.INSTANCE);
		        Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
		                .register("http", new PlainConnectionSocketFactory())
		                .register("https", socketFactory).build();
		        PoolingHttpClientConnectionManager phccm = new PoolingHttpClientConnectionManager(registry);
		        phccm.setMaxTotal(200);
		        CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).setConnectionManager(phccm).setConnectionManagerShared(true).build();
		        factory.setHttpClient(httpClient);
			//使用RestTemplate進行服務調用,如果非springMVC可以使用httpclient或者httpURLconnection
			RestTemplate restTemplate = new RestTemplate(factory);
			//url建議不要直接寫到代碼中
			String url ="https://xxx.xxxx.com/api/lapp/token/get";			
			//構造要發送的body體
			//頭部
			HttpHeaders headers = new HttpHeaders();
			headers.set("sjly", "A");
			headers.set("yhbs", "4631");
			headers.set("kstime", "201909");
			headers.set("channel", "0");
			//post參數
			MultiValueMap<String, String> map= new LinkedMultiValueMap<>();
			map.add("appKey", "xxxxxxxxxxxxxb50bb");
			map.add("appSecret", "xxxxxxxxxx1243d45b85b33ff2");
			org.springframework.http.HttpEntity<Object> httpEntity = new org.springframework.http.HttpEntity<Object>(map,headers);
			//執行請求獲得結果
			result = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class,map).getBody();
			System.out.println("-----------:"+result);
			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章