问题标签 [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 投票
0 回答
101 浏览

java - 在 Java Spring 中添加下载进度 RestTemplate

所以我正在使用 Spring Rest 模板下载一些文件。我需要在后端本身记录下载进度。那么可以以某种方式记录下载进度吗?

这是我的实现:

PS:我在想是否有办法拦截传输了多少响应体。

0 投票
0 回答
26 浏览

spring-boot - Spring Boot Rest 模板编码

我正在运行一个 spring boot 1.5.x 应用程序。

我想通过spring boot rest模板对另一个系统进行GET rest调用,例如:“/rest/id#1234”:

我也在使用 UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url);不编码的。

问题是,“id#1234”-param 中的“#”没有编码,所以我必须在发送之前手动执行 ->“%23”。

但随后“%”又被编码,所以它是:“%2523”。

我可以在那种情况下直接使用“#”吗?

0 投票
0 回答
175 浏览

swagger-codegen - 在 DTO 类中使用 @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) 后将所有值设为 NULL

在使用一项服务时,我遇到了“无法从 [Source: (ByteArrayInputStream) 的 START_OBJECT 令牌中反序列化 java.util.ArrayList 实例”的错误。但是在添加此注释 @JsonFormat(with = JsonFormat.Feature. ACCEPT_SINGLE_VALUE_AS_ARRAY) 在 dto 类列表属性级别。

DTO类:

我想将此 DTO 与响应对象映射,但在设置 @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) 后,所有属性值都作为 Null 响应。但是在 POSTMAN 中,所有属性都填充了值。

这是服务请求和响应的详细信息。但是收到此错误

使用此请求参数在 POSTMAN 中进行了测试,并且工作正常

1.请求正文期待json如下:

  1. POSTMAN 中的响应

    { "_embedded": { "outlets": [ { "outletId": "GD0002369", "companyId": "GP0001502", "legalName": "XHBD Tic.TAŞ. Adana Şubesi - XBYU KBF", "registeredOffice": true ,“mainOutlet”:假,“附属”:假,“startOperationDate”:“2002-01-01”,“outletIsActive”:真,“businessNames”:[{“businessName”:“abcd Adana”,“brand”: { “id”:“MBD”,“_links”:{ “brand”:{} } } },{ “businessName”:“DSE Adana”,“brand”:{ “id”:“SMT”,“_links” : { "brand": {} } } } ], "address": { "street": "Ceyhan Yolu Üzeri 5.km Polis Okulu Karşısı Yüreğir", "zipCode": "01310", "city": "Adana", "country": { "isoCode": "TR", "_links": { "country": { "href": “https://abcd-int.i.xyz.com/int/abcd-api/api/v1/countries/TR”}}}}}}]}
    }

这在邮递员中按预期工作。

我想用上面提到的我的 DTO OverseasPagedModelEntityModelOutlet.java 映射这个响应。它是使用 ParameterizedTypeReference 映射的

并通过传递 requestBody 和 returnType 调用 API,如下所示

但是 responseEntity 将所有对象和属性值显示为 NULL。这是 responseEntity :

但实际上,如果您通过 POSTMAN 调用此 API,所有值都会按预期反映。但不确定为什么 null 值会通过代码出现。

提前感谢您的帮助。

0 投票
0 回答
117 浏览

java - 将 API 返回的二进制数据 ( application/octet-stream ) 转换为 java 中的 xlsx

我正在尝试使用导致application/octet-stream的 API ,并且我正在尝试将响应保存到 .bin 文件中,问题是我想创建一个 java 程序,我们在其中获取此二进制数据并将其保存到XLSX文件。

0 投票
0 回答
16 浏览

java - 如何在signe测试用例中为不同的url多次模拟res模板

我想对不同的 url 使用不同的交换调用并返回相应的响应。但这会引发以下错误..有人可以帮忙吗? 在此处输入图像描述

0 投票
0 回答
24 浏览

java - 如何使用 RestTemplate 提供表单数据?

我需要从一种资源中获取数据。简单的 GET 请求需要不完整的数据集,这就是为什么用户应该使用 UI(复选框)阐明需要哪些数据。我总是需要所有数据,这就是我从浏览器控制台保存表单数据的原因。未解析的表单数据看起来像(这只是表单数据的一部分):

我试过的:

远程资源会忽略我的表单数据并为我提供不完整的数据。我究竟做错了什么?有人可以帮我解决这样的问题吗

0 投票
1 回答
98 浏览

java - 对 URL 查询参数进行编码,使其可以具有“+”

显然,在从 Spring Boot 1 迁移到 Spring Boot 2(Spring 5)的过程中,RestTemplates 的 URL 参数的编码行为发生了变化。在传递的其余模板上获取通用查询参数似乎异常困难,以便正确转义具有特殊含义的字符,例如“+”。似乎,由于“+”是一个有效字符,它不会被转义,即使它的含义被改变(见这里)。这似乎很奇怪,违反直觉,并且违反了所有其他平台上的所有其他约定。更重要的是,我不知道如何轻松绕过它。如果我先对字符串进行编码,它会被双重编码,因为“%”会被重新编码。无论如何,这似乎应该是框架所做的非常简单的事情,但我没有弄清楚。

这是我在 Spring Boot 1 中工作的代码:

但是,现在它不会对“+”字符进行编码,因此另一端将其解释为空格。在 Java Spring Boot 2 中构建此 URL 的正确方法是什么?

注意 - 我也试过这个,但它实际上对所有内容进行了双重编码:

在第一个中,如果我输入“q”=>“abc+1@efx.com”,那么,恰好在 URL 中,我得到“abc+1@efx.com”(即,根本没有编码) . 但是,在第二个中,如果我输入“abc+1@efx.com”,那么我会得到“abc%252B1%2540efx.com”,它是双编码的。

可以手写一个编码方法,但这似乎 (a) 有点矫枉过正,并且 (b) 自己编码是安全问题和奇怪的错误往往会蔓延的地方。但对我来说,你不能只添加似乎很疯狂Spring Boot 2 中的一个查询参数。这似乎是一项基本任务。我错过了什么?

0 投票
0 回答
18 浏览

curl - 我可以通过 Curl 模仿 Spring RestTemplate 请求吗?

getHttpEntity(request) 是 HttpEntity<MultiValueMap<String, Object>> 实例。

成员是正文和标题。

正文是 LinkedMultivalueMap<K, V>({state=[blabla], id_token=[blabla]}),标题是 HttpHeaders({User-Agent=[null]})

responseEntity 如下。

身体

{内容类型=[应用程序/xml;字符集=UTF-8],日期=[格林威治标准时间 2021 年 4 月 30 日星期五 06:41:00],位置=[https://my-site/oauth/callback?code=newAccessCode&uri=],服务器=[Mashery 代理] , X-Mashery-Message-ID=[blabla], X-Mashery-Responder=[nonprod.mashery.com], X-Plan-QPS-Allotted=[10], X-Plan-QPS-Current=[1] , X-Plan-Quota-Allotted=[10000], X-Plan-Quota-Current=[35], X-Plan-Quota-Reset=[格林威治标准时间 2021 年 5 月 1 日星期六 12:00:00 AM], 内容-长度=[73],连接=[保持活动]}

状态 302

我想在 win 10 中通过 curl 模拟这个休息模板请求。

我的 curl 版本如下。

我尝试如下,但没有人为我工作。

响应如下。

我只尝试了下面的 url,我得到了回应。

回复

还有什么我错过或必须知道的吗?

即使是一点点线索也会非常有帮助。

先感谢您。

0 投票
0 回答
269 浏览

java - 如何在 Spring Java 中使用 resttemplate 在回调 URL 中将 @RequestBody 作为字符串传递

我正在使用spring java中的resttemplate处理回调url,基本上,我试图在resttemplate中将@RequestBody作为字符串数据发送,它给了我一个404 not found错误,与我放置一些bean对象相比它给了我一个响应,但我想传递字符串数据而不是 bean 数据

需要解决的问题: 传递@RequestBody String bodydata 时出现404错误

上面的代码给了我以下错误:

工作代码: 如果我将@RequestBody 作为bean 即@RequestBody EcAllFieldAsyn16P2Bean bodydata 传递,那么我会正确地得到我的响应

请恢复解决方案。提前致谢。

0 投票
0 回答
15 浏览

spring - 调用具有多个 @RequestParam 自定义对象的 GET api

搜索了很多并经历了多个帖子,但没有得到我想要的。

我的控制器中有以下方法

我想知道如何使用 resttemplate 调用这个方法。我需要知道如何从调用者传递 UserContext 和其他用户定义的对象。