Spring RestTemplate关联HttpClient4.5的配置HttpClient和自身的BUG
来源:互联网 发布:无线游戏鼠标 知乎 编辑:程序博客网 时间:2024/06/16 05:08
如题 ,本博客将解决RestTemplate 的配置问题 ,同时告知其存在的BUG
写作背景:
我们知道HttpClient要想使用PATCH, PUT等请求 配置将相当麻烦, 当结合RestTemplate后就会变得十分简单. 那么如何进行结合?
<本文基于SpringBoot框架, 相关Spring也可以进行参考设计>
现在进行示例说明:
1.配置方法:
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.client.ClientHttpRequestFactory;import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;import org.springframework.web.client.RestTemplate;/** * @author yuton * @version 1.0 * @description * @since 2017/5/30 13:31 */@Configurationpublic class HttpClientRestConfig { @Bean public ClientHttpRequestFactory clientHttpRequestFactory() { HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(); clientHttpRequestFactory.setHttpClient(HttpsClientPoolThread.builder().createSSLClientDefault()); //这里是使用了自定义的一个HttpsClientPoolThread线程池单例 以后有机会会单独写文章展示其配置内容, 大家可以先使用默认的HttpClients.createDefault()进行配置,或自定义线程池; clientHttpRequestFactory.setConnectTimeout(10000); clientHttpRequestFactory.setReadTimeout(10000); clientHttpRequestFactory.setConnectionRequestTimeout(200); return clientHttpRequestFactory; } @Bean public RestTemplate restTemplate() { return new RestTemplate(clientHttpRequestFactory()); }}
2.使用方法:
@Resource private CopyWriteUI copyWriteUI; @Resource private I18nMessageUI i18nMessageUI; @Resource private RestTemplate restTemplate; @Override public IResult callPolice(String imei, String onOff) { String url = copyWriteUI.getSocketUrl() + APITable.CALL_POLICE_WATCH .replace("{imei}", imei) .replace("{onOff}", onOff); IResult result = restTemplate.patchForObject(url, null, Result.class); if (null == result) { return CommonTools.errorResult(ResultMessage.ERROR_PROMPT, i18nMessageUI.getNetworkAnomaly()); } if (result.isSuccessful()) { return CommonTools.successResult(ResultMessage.STATUS_SUCCESS); } return CommonTools.errorResult(ResultMessage.ERROR_PROMPT, i18nMessageUI.getNetworkAnomaly()); } @Override public IResult setWatchStepTime(String imei, String times) { String url = copyWriteUI.getSocketUrl() + APITable.SET_WATCH_STEP_TIME.replace("{imei}", imei); MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<>(); multiValueMap.add("times", times); IResult result = restTemplate.postForObject(url, multiValueMap, Result.class); if (null == result) { return CommonTools.errorResult(ResultMessage.ERROR_PROMPT, i18nMessageUI.getNetworkAnomaly()); } if (result.isSuccessful()) { return CommonTools.successResult(ResultMessage.STATUS_SUCCESS); } return CommonTools.errorResult(ResultMessage.ERROR_PROMPT, i18nMessageUI.getNetworkAnomaly()); }
在这里 要说明下:
- post put patch等请求 参数必须使用MultiValueMap进行接收和传递,否则 参数会为空!
- get请求,如果需要使用Map传递参数,那么该Map一定不能是MultiValueMap! 否则, 传递的参数会附带上’[]’!
阅读全文
4 0
- Spring RestTemplate关联HttpClient4.5的配置HttpClient和自身的BUG
- HttpClient4.5和RestTemplate使用
- Spring RestTemplate: 比httpClient更优雅的Restful URL访问
- httpclient4.5的bug setCharset无效
- spring的RestTemplate
- Spring RestTemplate: 比httpClient更优雅的Restful URL访问, java HttpPost with header,Spring RestTemplate在spr
- 数据库的自身关联
- 使用HttpClient4来构建Spring RestTemplate
- Spring RestTemplate与apache HttpClient
- spring的restTemplate注意点
- httpclient和oracle和apache的关联
- redis和linux和httpclient的关联
- httpclient和lua和c++的关联
- dll和plsql和httpclient的关联
- wireshark和httpclient和mysql的关联
- nginx和linq和httpclient的关联
- httpclient和jquery和adb的关联
- jquery和wireshark和httpclient的关联
- Zurmo开发的小技巧(8)
- QML之Grid网格定位器
- eclipse maven项目中修改 tomcat 部署路径
- Spring MVC中的@ModelAttribute
- scrollview 嵌套gridview 和 listview 会有冲突
- Spring RestTemplate关联HttpClient4.5的配置HttpClient和自身的BUG
- maven项目读取resources目录下文件
- 通过反射得到一个类的对象,如何对该对象对应的类的父类中的变量赋值
- Android多分辨率布局,多个layout
- I/O多路复用之select函数
- Python数据采集之Scrapy框架
- 嵌入式Linux中的根文件系统
- 三种广播,以及广播接收器的注册方式
- eclipse设置Ctrl+H打开File Search