我使用spring rest模板作为请求发送json数组。发送请求的源代码如下:
JSONArray jsonArray = new JSONArray();
for (Iterator iterator = itemlist.iterator(); iterator.hasNext();) {
Item item = (Item)iterator.next();
JSONObject formDetailsJson = new JSONObject();
formDetailsJson.put("id", item.getItemConfId());
formDetailsJson.put("name", item.getItems().getItemName());
formDetailsJson.put("price", item.getPrice());
formDetailsJson.put("Cost",item.getCost());
jsonArray.put(formDetailsJson);
}
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_JSON);
// Prepare header
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
// Pass the new person and header
HttpEntity<JSONArray> entity = new HttpEntity<JSONArray>(jsonArray, headers);
System.out.println("Json Object : "+entity);
// Send the request as POST
try {
ResponseEntity<String> result = restTemplate.exchange("my url", HttpMethod.POST, entity, String.class);
} catch (Exception e) {
logger.error(e);
return "Connection not avilable please try again";
}
并接受请求:
@RequestMapping(value = "/testStock", method = RequestMethod.POST,headers="Accept=application/xml, application/json")
public @ResponseBody int testStock(@RequestBody List<ItemList> jsonArray) {
logger.debug("Received request to connect ms access : "+jsonArray.size());
//int returnSizecount = stockList.getStocklst().size();
return 1;
}
问题是它给了我以下错误:无法写入请求:找不到适合请求类型[org.json.JSONArray]的HttpMessageConverter。任何建议都是可以接受的。
错误很简单。您没有用于JSONArray的转换器。将数组转换为字符串(使用toString)确实对您有所帮助,但有一种更好的方法:
只需为json.org对象添加一个转换器:
将此添加到您的pom.xml
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-json-org</artifactId>
</dependency>
然后在ObjectMapper上添加JsonOrgModule:
mapper.registerModule(new JsonOrgModule());
你需要有httpMessagConverter配置为您的rest模板,请阅读我的文章为您配置超文本传输协议消息转换器webservice
http://stackoverflow.com/questions/19963127/new-to-spring-and-jackson-2-what-does-this-bean-declaration-allow-for-in-a-spri/19973636#19973636.
对于您将超文本传输协议请求转换为json的问题,您可以在restemboard配置中添加此条目
<bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
JSONArray没有MessageConverter,因此我建议执行以下操作。
HttpEntity<JSONArray> entity = new HttpEntity<JSONArray>(jsonArray, headers);
将类JSONArray转换为String,并将其添加到HttpEntity,您知道使用toString
java.lang.字符串
Make a JSON text of this JSONArray.
HttpEntity实体=new HttpEntity(jsonArray.toString(),标头);
或者改变Jackson实现,Spring对此有支持。除息的
如果您不想执行上述操作,请考虑创建自己的messageConverter实现,这将很有效,但难度更大
更新
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
headers.setContentType(MediaType.APPLICATION_JSON);
更新2将endpoint更改为。
@RequestMapping(value = "/testStock", method = RequestMethod.POST)
public @ResponseBody int testStock(@RequestBody String jsonArray) {
我正在尝试使用spring应用程序的Thymeleaf模板发送邮件,我在这里引用https://github.com/Thymeleaf/thymeleafexamples-springmail/ 我没有得到任何错误,但它仍然不工作...我使用相同的代码给在github仍然没有运气...谁能建议如何做到这一点?? 下面是用来发送邮件的方法。 如果我删除使用thymeleaf创建html正文的行,并
模板消息使用规范 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如活动报名成功通知、审核结果通知、业务流转通知等; 不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息; 使用模板消息群发功能请务必遵守 微信模板消息运营规范 1. 手动发送模板消息 1)在活动、直播和会议的参与人员或参会人员列表,选择需要发送通知的活动报名用户发送通知: 2)在消息通知窗口的发
我正在尝试使用spring rest模板POST w/自定义拦截器将一个大文件从一个微服务发布到另一个微服务,如下所示: (我是否使用SimpleClientHttpask estFactory或HttpComponentsClientHttpask estFactory没有区别) 添加拦截器会在调用getRequestFactory时创建一个新的侦听ClientHttPrequestFactor
我有两项服务-和<代码>服务1通过SpringREST模板调用一些API。现在
我在用烧瓶做一个网站。它在top.html中使用sql显示一个列表,其中每个元素都是超文本。 所以我想知道从列表中点击了哪个超文本,这样我就可以在/text中加载它各自的内容。请同时提供python代码(flask代码)。