android - 如何解决android spring框架ResourceAccessException?
问题描述
我在连接 API 时收到以下错误消息。
每次都不会出错。请就此提出您宝贵的建议。
org.springframework.web.client.ResourceAccessException: I/O error: Unable to resolve host "website.name.org": No address associated with hostname; nested exception is java.net.UnknownHostException: Unable to resolve host "website.name.org": No address associated with hostname
我的代码:
Object responseObject = refSpringRequest(object);
public String refSpringRequest(JSONObject refObject) throws Exception{
ResponseEntity<String> response = null;
String resString;
try {
//.......................................................
RestTemplate restTemplate = new RestTemplate();
StringHttpMessageConverter sconverter = new StringHttpMessageConverter();
restTemplate.getMessageConverters().add(sconverter);
restTemplate.getMessageConverters().add(new org.springframework.http.converter.xml.SourceHttpMessageConverter());
restTemplate.getMessageConverters().add(new org.springframework.http.converter.FormHttpMessageConverter());
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter converter = new org.springframework.http.converter.json.MappingJacksonHttpMessageConverter();
converter.getObjectMapper().configure(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES, false);
converter.getObjectMapper().configure(SerializationConfig.Feature.WRITE_NULL_PROPERTIES, false);
converter.getObjectMapper().configure(SerializationConfig.Feature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS, true);
restTemplate.getMessageConverters().add(converter);
restTemplate.setRequestFactory( new HttpComponentsClientHttpRequestFactory());
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(HttpUtils.getNewHttpClient()));
//.......................................................
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(refObject.toString(), headers);//ZedAPI.URL_PAYMENT_REFERENCE
response = restTemplate.exchange(ZedAPI.URL_PAYMENT_REFERENCE_SPRING, HttpMethod.POST, entity, String.class);
resString = response.getBody();
} catch(HttpStatusCodeException e) {
resString=e.getResponseBodyAsString();
}
return resString;
}
实用类:
public class HttpUtils {
public static HttpClient getNewHttpClient() {
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);
SSLSocketFactory sf = new EasySSLSocketFactory(trustStore);
sf.setHostnameVerifier(
SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", sf, 443));
ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
return new DefaultHttpClient(ccm, params);
} catch (Exception e) {
return new DefaultHttpClient();
}
}
}
解决方案
推荐阅读
- utf-8 - PIL 'utf-8' 编解码器无法解码位置 0 中的字节 0x89:无效的起始字节
- android - Android ConstraintLayout ConstraintLayout.LayoutParams.WRAP_CONTENT 不起作用
- spring-boot - 为 Spring Boot 应用程序使用多个数据源配置时,未从属性转换器内的属性获取值
- c++ - 创建打包任务的priority_queue?
- google-sheets - 在不同日期汇总谷歌表格和换行符
- android - com.google.mlkit.nl.translate.Translation.getClient ,已导入但 getClient isient 工作
- android - android - 引导接收器未触发
- html - 如何调用API以角度获取json数据,url是带有端口号的tcp服务器
- docker - 域模式下的 Wildfly 未部署我的战争文件
- python - Plotly.py:强制轴单位为千 (k) 而不是百万 (M)