- 浏览: 782514 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (360)
- Java (101)
- JPA/Hibernate (10)
- Spring (14)
- Flex/BlazeDS (37)
- Database (30)
- Lucene/Solr/Nutch (0)
- Maven/Ant (25)
- CXF/WebService (3)
- RPC/RMI/SOAP/WSDL (1)
- REST (6)
- TDD/BDD/JUnit (1)
- Servlet/JSP (2)
- AI/MachineLearning (3)
- Resource (1)
- 字符编码 (2)
- OOA/OOPS/UML (5)
- DesignPattern (8)
- 算法与数据结构 (11)
- Web&App Server (13)
- 并发&异步&无阻塞 (7)
- Entertainment (4)
- JavaScript/ExtJS (45)
- CodeStyle&Quality (1)
- svn/git/perforce (8)
- JSON (2)
- JavaScriptTesting (4)
- Others (6)
- RegularExpression (2)
- Linux/Windows (12)
- Protocal (2)
- Celebrities (1)
- Interview (1)
- 计算机语言 (1)
- English (2)
- Eclipse (5)
- TimeZone/时区 (1)
- Finance (1)
- 信息安全 (1)
- JMS/MQ (2)
- XSD/XML/DTD (3)
- Android (4)
- 投资 (3)
- Distribution (3)
- Excel (1)
最新评论
-
qdujunjie:
如果把m换成具体的数字,比如4或者5,会让读者更明白
m阶B树中“阶”的含义 -
java-admin:
不错,加油,多写点文章
关于Extjs的mixins和plugin -
xiehuaidong880827:
你好,我用sencha cmd打包完本地工程后,把app.js ...
ExtJS使用Sencha Cmd合并javascript文件为一个文件 -
KIWIFLY:
lwpan 写道inverse = "true&qu ...
Hibernate中什么时候使用inverse=true -
luedipiaofeng:
good
消除IE stop running this script弹出框
注意点:
1)使用MultiValueMap设置入参,不要使用HashMap
2)构造HttpEntity发送请求
3)请求的参数使用LinkedMultiValueMap,每一个key里面存储的是个list,但是跟理解的有区别。不管入参是单个字符串、是一个对象的JSON字符串,还是一个对象List的JSON字符串,都是把整体的JSON作为第一个元素传递过去的,也就是请求接收方是类似下面的RestTemplatePostResponseParam 对象,但是值永远取第一个元素里的值,不管值代表的是单个字符串还是一个数组对象
4)返回的值同理也是要MultiValueMap,于是接受返回值的对象为RestTemplatePostRequestParam,也是值都只在第一个元素里面
调用方(客户端)代码
@Slf4j @RestController @RequestMapping("/sap") public class SapPullController { private final RestTemplate restTemplate; private final String SKU_AVALIABLE_FOR_SALE_URL = "http://mms-msm-hub/eccpullskuavailable/checkskuavailableforsale"; @Autowired public SapPullController(RestTemplate restTemplate) { this.restTemplate = restTemplate; } @ApiOperation(value = "判断商品是否可以销售", tags = {SwaggerConstant.SAP_PULL}) @RequestMapping(value = "/checkskuavailableforsale", method = RequestMethod.POST) public SkuAvailableForSaleOutputVO checkSkuAvailableForSale(@ApiParam(value = "请求参数", required = true) @RequestBody Map<String, Object> data) { log.info("--商品是否可销售入参: " + data.toString()); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON_UTF8); MultiValueMap<String,String> parameters = new LinkedMultiValueMap<String,String>(); parameters.add("params", JsonUtils.ToJsonString(data.get("item")).toLowerCase()); HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(parameters, headers); log.info("RequestEntity:{}", JsonUtils.ToJsonString(entity)); ResponseEntity<RestTemplatePostResponseParam> responseEntity = restTemplate.postForEntity(SKU_AVALIABLE_FOR_SALE_URL, entity, RestTemplatePostResponseParam.class); log.info("ResponseEntity:{}", JsonUtils.ToJsonString(responseEntity)); return JSON.parseObject(responseEntity.getBody().getParams().get(0), SkuAvailableForSaleOutputVO.class); } } @Data @AllArgsConstructor @NoArgsConstructor public class RestTemplatePostResponseParam implements Serializable{ private static final long serialVersionUID = 1L; private List<String> params = new ArrayList<>(); } @Data @AllArgsConstructor @NoArgsConstructor public class SkuAvailableForSaleOutputVO implements Serializable{ private static final long serialVersionUID = 1L; private List<ITEMBean> ITEM; @Data public static class ITEMBean { private String shopCode; private String skuCode; private String deliveryLocationCode; private String status; private String description; } }
服务提供方代码
/** * 商品是否可销售 * @author zhudaohui * @since 2018-07-20 * */ @RestController public class FHubEccPullSkuAvailableServiceImpl implements FHubEccPullSkuAvailableService { @Autowired private SkuAvailableForSaleService skuAvailableForSaleService; @Override @ApiOperation(value = "判断商品是否可销售", response = String.class, tags = {Swagger2Config.msm_Api_OutPut_Through_PI + Swagger2Config.web_Tag}) @OpenAPI(products = {ProductType.ALLIEDWEB}, authorities = {"mms:*"}) public MultiValueMap<String,String> checkSkuAvailableForSale(@ApiParam("判断商品是否可销售入参") @RequestBody(required=true) RestTemplatePostRequestParam param) { SkuAvailableForSaleInputVO vo = new SkuAvailableForSaleInputVO(); List<SkuAvailableForSaleInputVO.ITEMBean> list = JSON.parseArray(param.getParams().get(0), SkuAvailableForSaleInputVO.ITEMBean.class); vo.setItems(list); SkuAvailableForSaleOutputVO result = skuAvailableForSaleService.checkSkuAvailableForSale(vo); MultiValueMap<String, String> response = new LinkedMultiValueMap<String, String>(); response.add("params", JsonUtils.ToJsonString(result).toLowerCase()); return response; } } @Data @ApiModel("RestTemplate post请求参数接受") @AllArgsConstructor @NoArgsConstructor public class RestTemplatePostRequestParam implements Serializable{ private static final long serialVersionUID = 1L; private List<String> params; } @Data @ApiModel("商品是否可销售入参") @AllArgsConstructor @NoArgsConstructor public class SkuAvailableForSaleInputVO implements Serializable{ private static final long serialVersionUID = 1L; private List<ITEMBean> items; @Data public static class ITEMBean { private String shopCode; private String skuCode; private String deliveryLocationCode; } } @Data @ApiModel("商品是否可销售出参") @AllArgsConstructor @NoArgsConstructor public class SkuAvailableForSaleOutputVO implements Serializable{ private static final long serialVersionUID = 1L; private List<ITEMBean> ITEM = new ArrayList<>(); @Data @AllArgsConstructor @NoArgsConstructor public static class ITEMBean { private String shopCode; private String skuCode; private String deliveryLocationCode; private String status; private String description; } }
关于fasterxml-jackson发生Can not deserialize instance of异常原因验证
https://blog.csdn.net/li396864285/article/details/54287859
org.springframework.web.client.HttpClientErrorException: 400 null
百度了一下400代表无法解析请求。
说明请求是有问题的,如果发送的请求端没有问题。
那么就去控制器中查看是否有异常。
比如问题是控制器中的参数使用注解异常,
错误注解:@RequestParam
正确注解:@RequestBody
发表评论
-
sapjco3 notes
2019-03-21 14:51 1097sapjco https://support.sap.com/ ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 4576private final String BASE_URL = ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 3387private final String BASE_URL = ... -
Spring线程池ThreadPoolTaskExecutor
2018-08-06 09:51 1779<!-- spring thread pool ex ... -
Spring注解事物@Transactional不工作
2018-08-02 18:50 2543“In proxy mode (which is the de ... -
创建前缀索引报长度超出错误
2018-07-25 15:44 1647表结构定义如下: CREATE TABLE `sku` ( ` ... -
Mysql Varchar字符长度
2018-07-25 15:23 1297`sku_name` VARCHAR(200) NOT NUL ... -
Java动态代理Dynamic Proxy
2018-07-21 16:33 726JAVA学习篇--静态代理VS动态代理 https://blo ... -
分布式实时日志分析解决方案 ELK 部署架构
2018-07-20 09:52 1142原文链接:http://www.importn ... -
为什么HashMap容量一定要为2的幂呢?
2018-07-19 10:07 1654原文链接:https://blog.csdn.net/wang ... -
为什么计算HashCode时通常选择31这个数?
2018-07-19 10:05 1330摘自http://www.importnew.com/2208 ... -
jackson自定义序列化和反序列化
2018-07-10 18:47 2175原文链接:https://blog.csdn.net/liu ... -
Spring MVC几种页面跳转方式
2017-07-26 10:31 1953Spring MVC几种页面跳转方式 http://blog. ... -
Pay special attention when modifying online running system
2017-06-23 10:25 0Never remove any properties, me ... -
Map中的Null key, Null Value
2017-06-14 10:52 1883ConcurrentHashMap的key和value都不能为 ... -
Java语法糖
2017-06-05 20:03 476Java语法糖之foreach http://www.imp ... -
Java集合相关
2017-05-24 17:55 0Java集合框架:ArrayList http://www. ... -
Java数据类型的转换:隐式(自动)转换与强制转换
2017-05-14 10:46 0http://blog.csdn.net/u011240877 ... -
分布式开放消息系统(RocketMQ)的原理与实践
2017-05-07 19:55 672分布式开放消息系统(RocketMQ)的原理与实践 http ... -
面试知识点复习(Interview knowledge review)
2017-05-07 18:39 0JVM,多线程相关知识 http://darrenzhu.it ...
相关推荐
发送Post请求,内容格式为xml,并获取响应内容
public static String post(String url, String params){ log.info("post url:" + url + " params:" + params); String responseStr = ""; try(CloseableHttpClient httpClient = HttpClients.createDefault()) {...
Spring 3.0 RestTemplate
spring rest template 封装,支持文件下载,超时属性设置,http rest接口调用
RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。也就是说RestTemplate是一个封装,底层...
Riptide 是Spring RestTemplate的一个扩展,提供我们所说的客户端响应路由(client-side response routing)
本文详解说明了RestTemplate post传递参数时报错的问题及其原由,需要的朋友可以参考下
主要介绍了SpringBoot+SpringSecurity处理Ajax登录请求问题,本文给大家介绍的非常不错,具有参考借鉴价值,需要的朋友可以参考下
主要介绍了如何使用Spring RestTemplate访问restful服务,详细的介绍了什么是RestTemplate以及简单实现,非常具有实用价值,需要的朋友可以参考下
本篇文章主要介绍了Spring使用RestTemplate模拟form提交示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Spring RestTemplate具体使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Spring RestTemplate基本使用介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
工作中常用的远程调用请求工具类,支持请求方法:GET、POST、PUT、DELETE,支持媒体格式:text/plain、text/xml、application/json、application/x-www-form-urlencoded,支持请求协议:HTTP、HTTPS,该工具类直接可...
7.RestTemplate的逆袭之路,从发送请求到负载均衡 8.Spring Cloud中负载均衡器概览 9.Spring Cloud中的负载均衡策略 10.Spring Cloud中的断路器Hystrix 11.Spring Cloud自定义Hystrix请求命令 12.Spring Cloud...
SpringCloud简单使用RestTemplate调用对方的服务
所有浏览器都兼容,http响应机制,及实现代码。。。。。。
《深入理解Spring Cloud与微服务构建》学习笔记(十一)~使用RestTemplate和Ribbo消费服务
NULL 博文链接:https://13shu.iteye.com/blog/2021652
org.springframework.web.client.AsyncRestTemplate org.springframework.web.client.RestTemplate HTTP请求工具类,基于以上两个Rest请求工具模板完成封装HTTP请求,包括同步和异步请求的实现。
本篇文章主要介绍了Spring Boot RestTemplate提交表单数据的三种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧