我正在尝试使用Spring进行GET http请求。
我的主要班级:
final String url = getString(R.string.myurl);
// Populate the HTTP Basic Authentitcation header with the username and password
String Usn = "username";
String ww = "password";
HttpAuthentication authHeader = new HttpBasicAuthentication(Usn, ww);
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAuthorization(authHeader);
requestHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
System.out.println("Headers: " + requestHeaders.toString());
// Create a new RestTemplate instance
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
try {
// Make the network request
Log.d(TAG, url);
ResponseEntity<CatMessage> response = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<Object>(requestHeaders), CatMessage.class);
System.out.println(response.toString());
} catch (HttpClientErrorException e) {
Log.e(TAG, e.getLocalizedMessage(), e);
}
}
使用CatMessage类:
public class CatMessage {
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String message;
public int code;
}
我应该得到回来,因为我使用不工作的用户名和密码组合(和这个服务器部分工作正常),是:
{
"message": "You are not authorized to use this service",
"code": 5201
}
我认为这应该行得通,因为我几乎是在复制Spring for Android的基本auth项目
但是发生的是解析的问题(我认为)。当然,我已经包含了Jackson和Spring依赖项,所以我不希望我的问题出现在那里。但是我希望一个非常小的JSON,有一个很好的映射模型(CatMessage),并包括我的杰克逊文件,所以我认为这应该工作...
02-22 00:13:42.977:E/AndroidRuntime(2052):原因:组织。springframework。网状物客户RestClientException:无法提取响应:未找到响应类型[org.springframework.android.basicauth.CatMessage]和内容类型[text/html]02-22 00:13:42.977:E/AndroidRuntime(2052):位于org的合适的HttpMessageConverter。springframework。网状物客户HttpMessageConverterExtractor。extractData(HttpMessageConverterExtractor.java:79)02-22 00:13:42.977:E/AndroidRuntime(2052):位于org。springframework。网状物客户RestTemplate$ResponseEntityResponseExtractor。extractData(RestTemplate.java:655)02-22 00:13:42.977:E/AndroidRuntime(2052):位于org。springframework。网状物客户RestTemplate$ResponseEntityResponseExtractor。extractData(RestTemplate.java:641)02-22 00:13:42.977:E/AndroidRuntime(2052):位于org。springframework。网状物客户RestTemplate。doExecute(RestTemplate.java:484)02-22 00:13:42.977:E/AndroidRuntime(2052):位于org。springframework。网状物客户RestTemplate。执行(restemplate.java:439)02-22 00:13:42.977:E/AndroidRuntime(2052):在org。springframework。网状物客户RestTemplate。exchange(RestTemplate.java:415)
有人知道我的问题在哪里吗?在一件看起来很简单的事情上工作几个小时真糟糕。。。非常感谢。
您的代码看起来不错,我能想到的唯一解释是您所调用的服务
Content-Type
响应头的text/json
或类似的内容(默认情况下,MappingJackson2HttpMessageConzer只知道Application/json
)。您可以检查Content-Type
响应头(因为这是由RestTemboard
用来选择适当的HttpMessageConzer
)吗?
Spring JMS中的类具有setter方法,它允许提供我们想要的任何转换器。 对于带注释的消息侦听器,这很有意义,因为我们可以直接定义 spring将负责将消息转换并传递给这个侦听器。 因此,这对于带注释的听者来说显然是有意义的。我的问题是,设置消息转换器对非注释消息侦听器有用吗?类似于 从我在docs/javadocs中的搜索和对源代码的有限理解来看,我认为为这种情况设置消息转换器是没有帮助
我在使用spring-jms模块转换来自RabbitMQ的消息时遇到了一些问题。以前,我使用Rest APIendpoint发送消息,该endpoint将消息发送到RabbitMQ队列,并使用@JMSListener方法处理它。 在内部,这种行为添加了一个字段来确定Java类型,由Spring库管理。但是,现在我想避免Rest API调用,因为它不是必需的,而且我可以直接将消息发送到RabbitM
使用MVC Java编程配置方式时,如果你想替换Spring MVC提供的默认转换器,完全定制自己的HttpMessageConverter,这可以通过覆写configureMessageConverters()方法来实现。如果你只是想定制一下,或者想在默认转换器之外再添加其他的转换器,那么可以通过覆写extendMessageConverters()方法来实现。 下面是一段例子,它使用定制的Ob
问题内容: 我遵循此示例在Spring中设置TCP客户端。下面是变压器所在的我的文件。有人可以帮助我删除变压器并按原样发送数据吗?如果我尝试删除该行甚至将其设置为null,则在构建项目时会遇到异常。 编辑: 现在,我可以使用自定义的序列化器/解串器发送消息了。但是很遗憾,我无法收到回复。这是我的序列化器/反序列化器: 我在序列化器/反序列化器的第一行完成了一些日志记录,但是从未打印过该日志。反过来
消费者使用Spring的JavaConfig类如下: Kafka主题侦听器使用@KafkaListener注释,如下所示: 我的pom包括依赖项: 现在当我打包到war并部署到tomcat时,它不会显示任何错误,即使在调试模式下也不会显示任何错误,只是部署war什么都没有。 请帮助我了解是否缺少触发kafkalistner的某些配置。 谢谢Gary我添加了上下文。xml和web。xml,但我得到了
在将我们的一个服务升级到2.0.0.rc3时,当试图使用一个使用较旧版本-ditmars的服务生成的消息时,我们遇到了一个异常。发行版: 错误31241---[container-4-C-1]O.S.Integration.Handler.LoggingHandler:org.SpringFramework.Messaging.Converter.MessageConversionExceptio