问题标签 [spring-resttemplate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
117 浏览

spring - 如果数据更多,Spring rest模板关闭连接

我有一个场景,如果服务器发送的数据比预期的多,则需要关闭 http 连接。即在收到数据几秒钟后,我想自动关闭连接。这可行吗?

0 投票
2 回答
1306 浏览

java - 休息调用上的 JsonFormat$Value.hasLenient() 错误

我正在 Spring Boot 中构建一组微服务。我有一个与数据库接口的服务,并且有一系列其他应用程序可以访问的 RESTful 端点。这些表实体中有许多是复杂对象并作为 JSON 对象提供,但有些是简单参数,因此作为字符串提供。当我点击主要的数据库服务端点时,所有数据都可以正常返回,没有问题。

我有一系列其他应用程序以各种方式使用这些数据。因为许多对象在应用程序中被重用(DB 服务响应形状、人实体 POJO 等),所以我有一个由一些通用类组成的包。每个应用程序都会导入这些公共类,然后通过RestTemplate. 因为响应总是以标准方式包装,所以我通过执行交换来获取值,该交换期望ParameterizedTypeReference响应包装器具有适当的 POJO 或 Java 变量(字符串、int 等)。

截至5个月前,一切都很好。该应用程序已部署到服务器并且仍在正常运行。但是,我最近返回代码进行一些修改,现在我发现当我在本地运行应用程序时,一些端点失败并出现以下错误:

起初我以为这两个 POM 可能不同步,一个正在拉更新版本的 Jackson,但是在 POM 中对版本进行硬编码以 100% 确定它们是相同的(版本 2.10.1)之后,它仍然有同样的问题。还应注意,错误消息中的方法似乎已在 2.9 版中添加,并且截至目前尚未弃用。此错误仅在尝试从返回 POJO 的端点检索数据时发生,而不是在数据类型为字符串时发生。调用似乎永远不会在引发错误之前真正离开应用程序也可能相关,因为数据库服务端点永远不会被命中。

任何想法为什么我会收到此错误以及如何解决它?

响应对象:

个人服务:

个人应用 POM:

常见元素 POM:

更新 我相信外部库和可能不同步的 POM 文件是一个红鲱鱼。我已将所有相关类复制到主项目中,以消除对外部包的依赖,我也遇到了同样的问题。我还尝试将所有版本完全升级到最新版本,但仍然没有运气。无论出于何种原因,杰克逊都会将 JSON 映射到字符串或字符串列表,但不会将我的 JSON 映射到 POJO。

0 投票
0 回答
37 浏览

utf-16 - 使用 restTemplate 使用 UTF-16 端点

我编写了一个旨在使用远程 XML 服务的客户端应用程序

这个有效载荷一切正常:

但原来的有效载荷是

UTF-16 是 UTF-8 的缩影。在 UTF-16 的情况下,我得到了一个例外

XML 有效负载是否可以编码 UTF-16,或者是否可以自定义 Jaxb2RootElementHttpMessageConverter 以接受 UTF-16?

0 投票
1 回答
327 浏览

spring - 带有 Spring RestTemplate 的 JSON 到 CSV API

从我自己的 API 获取 JSON 后,我想将 JSON 转换为 CSV API。JSON to CSV API 需要在 POST 请求中传递电子邮件和 JSON。现在我可以在本地存储 JSON,但是,如何在请求中同时传递电子邮件和 JSON,以及如何处理响应中的 CSV?

控制器

更新: 我按照@Adrien 的建议创建了一个EmployeeCsvParams包含电子邮件和 json 字符串字段的类,但我仍然需要处理响应中的 CSV。

0 投票
2 回答
491 浏览

java - Alfresco - 如何在使用 RestTemplate 进行发布时添加/设置文件的内容

我正在尝试使用以下方法将文件上传到 DocLibrary 文件夹:

文档建议这样做:

使用 postTheDocument() 方法创建空文档。但是当我尝试以下请求时:

我得到以下异常:

我在这里做错了什么或我错过了什么?

0 投票
1 回答
148 浏览

java - 如何处理客户服务中未找到的状态

我是开发微服务应用程序后端的新手。

我正在尝试从 Spring Boot 微服务架构中的其他服务获取国家/地区详细信息。作为单元测试的一部分,我正在编写一个否定测试用例,其中我请求的 CommonData mricroservice 在传递不存在的国家代码时将返回 http 状态 NOT FOUND。

但是 ResponseEntity 抛出了 HttpClientErrorExeption$NotFound: 404: [no body]。

我应该如何处理这种预期的反应?

CommonData 微服务 - 控制器

用户微服务 - CommonDataService

负测试用例

也欢迎任何改进代码的建议。

0 投票
1 回答
775 浏览

java - Spring Boot Rest 模板代理仅在少数类中

我的团队正在使用 RestTemplate 进行外部 API 调用。我们需要将 RestTemplate 配置为仅在某些类中使用代理。在所有其他类中,我们希望避免使用代理。我的第一个想法是继续使用不需要代理的@Autowire RestTemplate,并在所有需要代理的类中执行以下操作。我对这个解决方案不满意,因为@Autowire RestTemplate 看起来真的很干净,但必须在每个需要它的类中键入以下代理配置的 RestTemplate。有没有更清洁的替代品?

需要代理


***解决方案***
为 rest 模板创建了 2 个 bean 并将一个声明为主要的(需要避免错误)

配置类中的新 bean

然后我在需要使用代理的地方自动装配并使用了@Qualifier 注释

0 投票
1 回答
459 浏览

apache-httpclient-4.x - 带有JDK11错误的Spring RestTemplate发布超过一定限制的数据

我正在使用带有 JDK11 的 OAuth2RestTemplate 使用 Json 数据(860 行和 26 KB)发出 POST 请求。奇怪的是,代码在生产服务器上使用 < 700 Json 行(或 20 KB)并且在本地机器上使用 < 500 行(15 KB)时运行良好。但是一旦我在 JSON 中增加了几个数据块,它就会开始给出异常。异常基于与 RestTemplate 一起使用的 HttpRequestFactory 实现。如果我使用HttpComponentsClientHttpRequestFactoryNoHttpResponseException XXX.XXX:443 无法响应,如果我使用SimpleClientHttpRequestFactoryjava.net.SocketException 来自服务器的文件意外结束

奇怪的是,这适用于较低版本的 JDK 8、9 和 10。我还尝试了其他 Http 客户端,如带有 JDK11 的 Spring Webclient,并且相同的数据可以使用它。除此之外,同样的数据也适用于 Curl/Postman。但无法确定为什么它会在超出特定数据限制的 RestTemplate 上产生问题。

以下是我正在使用的一些主要依赖项(依赖项在现有项目中不会有太大变化)。

任何帮助或想法将不胜感激。TIA

0 投票
0 回答
53 浏览

java - 无法使用 Spring RestTemplate 客户端将请求参数发送到 HttpServeletRequest doPost

我正在使用 Spring RestTemplate 客户端对另一个应用程序进行 POST 调用,该应用程序将此请求作为 HTTpServletRequest 处理。问题是 HTTpServletRequest 期待一个键值对,例如

这是两端的代码片段 -

我的应用程序 -

其他应用程序 -

我只想知道我的错误以及如何将我的数据字符串传递给发布请求,以便将request.getParameter("xml123")我的数据 xml 作为字符串接收。

0 投票
1 回答
451 浏览

java - 如何将大型 JSON 字符串转换为 JSON 对象?

我的 spring 应用程序向服务器发出了一个休息请求,服务器的响应是一个 JSONObject 字符串。JSON 字符串非常大(200MB)。我想将 json 字符串转换为 JSONObject。以下是我的转换代码:

对于单个请求,转换需要 3-5 秒。但是,如果有多个请求,则转换需要很长时间(并行 8-10 个请求需要 60 秒)。有没有更好的方法来做到这一点?