当前位置: 首页 > 知识库问答 >
问题:

ResponseEntity不接受返回类型“byte[]”,但接受“ResponseEntity”

傅琦
2023-03-14

我试图通过RESTendpoint将数据从一个服务器发送到另一个服务器:

服务器B启动此请求:

String resource = "http://...";
ResponseEntity<byte[]> response = restTemplate.getForObject(resource, byte[].class, customerID);

服务器A接收请求并返回文件

    ResponseEntity<byte[]> resp = new ResponseEntity<byte[]>(myByteArrayOutputStream.toByteArray(), HttpStatus.OK);
    return resp;
Required Type: ResponseEntity[]
Provided: byte[]

因此,很明显,我必须将声明更改为:

byte[] response = restTemplate.getForObject(resource, byte[].class, customerID);

或者到

ResponseEntity<byte[]> response = restTemplate.getForObject(resource, ResponseEntity.class, customerID);

然后错误消失了,但我丢失了HttpStatus。回复时是否有确认信息?这里的正确解决方案是什么?

共有1个答案

魏浩广
2023-03-14

是的,getForObject方法不提供对响应元数据(如标题和状态代码)的访问。如果必须访问此数据,请使用RestTemplate\getForEntity(url、responseType、uriVariables)

restemplate#getForEntity返回一个包装ResponseEntity

ResponseEntity<byte[]> response = restTemplate.getForEntity(resource, byte[].class, customerID);
if (response.getStatusCode() == HttpStatus.OK) {
    byte[] responseContent = response.getBody();
    // ...
} else {
    // this is not very useful because for error codes (4xx and 5xx) the RestTemplate throws an Exception
}

 类似资料:
  • Iam试图创建一个API来接受CSV和json主体请求等文件。我尝试在spring boot使用对象。 endpoint如下所示。 内容头是通过邮递员设置的。 是,是。 抛出的错误是 我该怎么解决这个?

  • 问题内容: 我想了解为什么下面的代码片段无法编译。将函数接受为可能具有任何返回类型的函数参数的Go方法是什么? 播放:https://play.golang.org/p/CqbuEZGy12 我的解决方案基于Volker的答案: 播放:https://play.golang.org/p/waOGBZZwN7 问题答案: 你绊倒了围棋新人一个非常普遍的误解:空接口并 不能 意味着“任何类型”。确实不

  • 我希望为我的2D游戏创造平滑的道路。看着这正是我需要的东西。每一篇文章,甚至在上,都给它一个类型,并用构造函数传递所有控制点和一个。这似乎是过时的,不再接受任何类型参数,没有它,它只能与路径工作。构造函数也不接受控制点列表。 这会产生以下错误:

  • 我正在将现有代码迁移到一个超类/子类的情况下。见下文。 方法在父类中:

  • 我正在尝试基于非阻塞NIO消息开发自己的通信库。我已经阅读了1000篇关于它的教程和书中的章节,我认为最后我有了一些可以在几乎没有同时连接的情况下工作的东西。但是当我在服务器端有很多连接共存时,我遇到了一些问题。 我有4个私有方法的典型选择器实现:accept、finishConnect、read和write。我的问题在于前两个:接受和完成连接。 当客户端打开一个新的套接字,并且一个可接受的键唤醒

  • 这是我的蓝图代码。 内部消息工作。 外部消息不工作。 我在docker中运行Red Hat AMQ 7和Fuse 7。内部消息队列在服务之间正常工作。 使用AMQ 6,当在activemq中设置时,我能够向61613上的嵌入式代理发送和接收STOMP消息。xml 现在,我正在使用AMQ 7.0的默认设置,它将接受程序设置为0.0.0.0:61616和61613,这两个接受STOMP协议。 但是相同