- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 spring android rest 模板
并尝试将 JSON 响应转换为 java 类,如图所示 here .
这是我尝试完成这项工作的代码 fragment :
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
//I have already tried to manually setting converters with no luck
//List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
//messageConverters.add(new MappingJacksonHttpMessageConverter());
//messageConverters.add(new FormHttpMessageConverter());
//messageConverters.add(new StringHttpMessageConverter());
//restTemplate.setMessageConverters(messageConverters);
Result result = restTemplate.getForObject(url, Result.class);
我想我已经按照文档中的要求完成了所有要求:
url
确实返回一个 JSON 对象。Result
类是一个包含所有必填字段的 POJO基本上在我的类路径中有 Jackson 依赖项
必须足以让它像它所说的那样工作:
The MappingJacksonHttpMessageConverter is conditionally loaded when you create a new RestTemplate instance. If the Jackson dependencies are found in your classpath, the message converter will be automatically added and available for use in REST operations.
那么我在这里缺少什么,我做错了什么?
谢谢
可以在这里找到完整的异常:
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): FATAL EXCEPTION: main
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): java.lang.IllegalStateException: Could not execute method of the activity
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at android.view.View$1.onClick(View.java:2083)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at android.view.View.performClick(View.java:2421)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at android.view.View$PerformClick.run(View.java:8869)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at android.os.Handler.handleCallback(Handler.java:587)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at android.os.Handler.dispatchMessage(Handler.java:92)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at android.os.Looper.loop(Looper.java:143)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at android.app.ActivityThread.main(ActivityThread.java:5068)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at java.lang.reflect.Method.invokeNative(Native Method)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at java.lang.reflect.Method.invoke(Method.java:521)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at dalvik.system.NativeStart.main(Native Method)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): Caused by: java.lang.reflect.InvocationTargetException
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at xxx.SamplePageActivity.doRest(SamplePageActivity.java:83)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at java.lang.reflect.Method.invokeNative(Native Method)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at java.lang.reflect.Method.invoke(Method.java:521)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at android.view.View$1.onClick(View.java:2078)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): ... 11 more
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): Caused by: org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [[Lxxx.SamplePageActivity$Result;] and content type [application/json;charset=UTF-8]
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:77)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:449)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:404)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:202)
04-20 04:25:52.706: ERROR/AndroidRuntime(9638): ... 15 more
最佳答案
我从未在 Android 上做过任何事情,但我知道转换者对 Content-Type 很挑剔。为了让 Jackson 工作,消息正文需要有 'Content-Type: application/json'。尝试检查响应中的所有 header 。
关于机器人 RestClientException : no suitable HttpMessageConverter found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5724697/
我正在编写一个客户端来使用 RESTful 服务。我需要以键值对的形式发送请求,他们建议我为此使用 Map。我调用的 RESTful 服务只接受 JSON,我的客户端将使用 Java。它实际上将成为现
我正在尝试获取 ResponseEntity with spring rest 模板,如下所示。我收到以下错误, Caused by: org.springframework.web.client.R
我想创建一个 RuntimeException 并设置 HTTP 状态和文本。有一个创建文本的 textService。 看了很多帖子,还是没明白。 我不能像这样在构造函数中使用 Autowiring
使用 Spring ,使用此代码: List> messageConverters = restTemplate.getMessageConverters(); for(HttpMessageConv
1、HttpMessageConverter 1、ResponseBody 2、RequestEntity 3、@ResponseBody 4、SpringMVC处理json 5、SpringMVC处
我正在运行一个 Spring Boot 应用程序,我已经注册了一个名为 CsvCompactVenueHttpMessageConverter 的新 HttpMessageConverter,这是它的
我有一个 Spring mvc @RestController 类,其中方法参数用 @RequestBody 注释。像这样: @RestController @RequestMapping("/fea
当在入站网关中使用消息转换器发生转换错误时,我遇到了奇怪的行为。下面示例中的想法是接收 XML 有效负载(或序列化 java),将它们转换为 java 对象并使用相同的媒体类型进行响应。 鉴于此配置:
我有一个基于 Spring MVC 的 Rest Web 服务。我用@RestControllerAdvice处理从我的 @Controller 抛出的异常s。 Controller 调用示例如下
读取数据时,Spring HttpMessageConverter 必须如何处理无效的 EOF?也就是说,在这种情况下,Spring MVC 的其余部分如何期望客户转换器发出错误请求信号? 实现读取数
编辑:错误发生在客户端而不是服务器。响应正文正在写入,但客户端未在 400 响应上读取它。 我有一个自定义消息转换器来生成 text/csv , application/csv来自ErrorRespo
我在客户端和服务器上都设置了使用 Jaxb2 的 MarshallingMessageConverter 关注 this问题。 这是在服务器端: @Configuration @EnableWebMv
我正在尝试在 Spring Boot 中解析以下 xml 响应: 响应结构: 来自服务的 API 调用: RestTemplate restTemplate = new RestTem
现在我正在使用 Spring MVC,我遇到并发出一些 Controller 方法没有返回数据并抛出 HttpMediaTypeNotAcceptableException 的问题。我的方法产生了te
我正在编写一个必须调用休息服务的 spring mvc 应用程序(Spring 新手)。我在我的 VM(Linux 中的 weblogic 10.3.6)中部署了其余服务,我正在编写的应用程序在我的本
首先,对于可能的重复,我们深表歉意。我发现了一些关于类似问题的问题。但是,我仍然无法弄清楚我的具体情况出了什么问题。 因此,来自服务器的示例 json: [ { "_id": "55f96
在实现 RESTful API 时,我将所有数据包装在一个对象中,因此它看起来像这样。 {error: null, code: 200, data: {...actual data...}} 这导致我
我正在使用 spring android rest 模板 并尝试将 JSON 响应转换为 java 类,如图所示 here . 这是我尝试完成这项工作的代码 fragment : RestTe
我正在尝试使用 Spring for Android rest client 通过 http post 发送数据,以避免创建和解析 json 数据。 来自他们的 manual他们有以下方法: rest
我正在将 JAXB 对象发布到 REST 服务。生成的类没有 XMLRootElement,因此我使用 Object Factory createXMl 方法创建它。当我手动添加 XMLRootEle
我是一名优秀的程序员,十分优秀!