问题标签 [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.
spring-boot - 如何为 RestTemplate 交换方法编写 JUnit 测试
如何为以下类编写 Mockito JUnit 测试?这是我的代码:
请帮忙
java - 如何在 Spring Boot 休息模板中使用 .pfx 证书和密码调用安全休息 api?
我需要从我的 spring boot 应用程序中调用一个外部安全的 rest api(ssl enabled)。邮递员可以使用 .pfx 证书和密码访问外部 api。现在我想通过在每个请求上附加 .pfx 文件和密码来使用 rest 模板调用外部 api。
我不知道如何使用 pfx 证书通过 ssl 进行休息模板调用。任何帮助将不胜感激。
spring-boot - 如何使用resttemplate对url进行编码,在查询参数中包含特殊字符
使用 RestTemplate 在查询参数中包含特殊字符的 URL 时出现错误。
我的网址是这样的
有人可以帮我如何使用 RestTemplate 对这种类型的 URL 进行编码。当我通过浏览器或邮递员点击时,此 URL 工作正常。
spring - Spring boot RestTemplate 关闭连接以获取 NULL 响应导致 ConnectionPoolTimeoutExceptions
我们有一个 spring boot 应用程序,它对一堆后端进行 RESTFul 调用,其中一个有时返回空响应,并且我们观察到在这些实例期间连接没有释放,因为 RestTemplate 类中的这段代码:
有没有办法在响应为空或出错时释放连接或使用内容?
编辑添加导致错误的代码:
java - TestRestTemplate HttpHostConnectException:连接到 localhost:8082 [localhost/127.0.0.1] 失败:连接被拒绝
我只是从https://github.com/eugenp/tutorials/tree/master/spring-resttemplate克隆源代码,无法在givenFooService_whenCallHeadForHeaders_thenReceiveAllHeaders()
本地执行测试。
我收到了下一个异常
有关存储库的附加信息https://www.baeldung.com/spring-boot-testresttemplate
奇怪的是教程示例无法正常工作。
java - RestTemplate 尝试捕获
我正在使用下面的 Java(Spring 2.0)代码从 webService 读取 ResponseEntity:
但是,如果 myUrl Web 服务返回 HttpStatus.BAD_REQUEST (400) ,这不会分配给 myResponse 并且会引发错误,因此没有 ResponseBody 并且我需要将请求包装在 try catch 块中。这是正确的还是有办法解决这个问题?此外,这是否意味着 myUrl Web 服务永远不应有意(以编程方式)将 myResponseObj 的 HttpStatus 设置为 HttpStatus.BAD_REQUEST?因此,即使 myRequestObj 包含错误数据,myUrl webService 仍应将响应状态设置为 200 的值,即 HttpStatus.NO_CONTENT。欢迎就如何正确执行此操作提出任何意见。
java - WebClient 返回空响应的问题
我正在做一个项目,直到现在一直在使用org.springframework.web.client.RestTemplate
我最近了解到这个类将被弃用以支持异步 org.springframework.web.reactive.function.client.WebClient
框架。现在我非常赞成这一点,因为我的应用程序在等待来自 RestTemplate (GET) 调用的响应时遇到了长时间的延迟(此时我可能正在做数据库的事情等)。
我现在遇到的问题是,如果我拨打如下电话:
当我进行后续调用时:
System.out.println(call.block());
我得到了预期的输出(填充的 Json 对象的字符串版本)。
但是,如果我将之前的调用更改为(我想做的!):
当我这样做时:
System.out.println(call.block());
我只是得到{}
而不是填充的 JsonObject
所以看起来bodyToMono()
没有完成“我”的预期
当我使用 RestTemplate 时,有一种方法可以使用模板注册序列化程序(尽管这不是必需的JsonObject
),这对 WebClient 也有必要吗?如果是这样,你怎么做?
我将不胜感激。
谢谢
账单
注意我不确定这是否有任何相关性,但我正在访问的其余端点确实有 IP 限制,所以如果以某种方式WebClient
更改原始 IP,这可能会产生一些影响。虽然我本以为它会更像4**
某种东西,但我没有看到任何这些!或者可能是媒体类型问题,因为它正在通过 DMZ,例如,监护人可能会将“未经授权的”请求从application/json
更改text/*
为。
可能相关的另一点是,要成功启动应用程序,必须使用以下属性运行它:
spring.main.web-application-type=none
更新
我现在可以运行我的应用程序,尽管不是我想要的!
问题似乎是我需要使用的团队 pom 导入的传递依赖项(作为父 pom)。我现在成功启动了该项目。但仍然发现 json 对象(现在是杰克逊)仍然是空的(如 所报告的object.isEmpty()
)。
我现在的依赖项/版本是:
org.springframework:5.2.8.RELEASE
org.springframework.boot:2.3.3.RELEASE
com.fasterxml.jackson:2.11.2
我知道我正在与父 pom 作斗争,这与我正在尝试做的事情相反,但想知道我真正需要的依赖项是什么
java - Java HTTP API 调用 - 流入和流出数据
我有一个用 Java 和 Spring Boot 编写的文件传输服务,它在没有任何本地存储的情况下将文件从源流传输到目标。
它从源获取 InputStream 的句柄,并为目标获取 OutputStream 的句柄,并有效地执行以下操作以流式传输文件。
现在我有另一个要求,我需要调用一个接受应用程序/八进制流并返回相同的加密 API。API 在客户端提供数据时对数据进行加密,同时将数据作为流返回。我已经使用以下命令使用 curl 测试了 API:
现在我需要将此加密 API 与我的原始文件传输服务集成,在那里我可以获得源 InputStream 的句柄,将其提供给 API 请求,从 API 响应接收 InputStream 并将其插入到我的原始 IOUtils.copy 调用中以传输数据到目的地:
为了最初实现加密 API 调用,我尝试构建一个客户端并提供一个 FileInputStream 并将响应提取到 FileOutputStream 中。我已经尝试过 Apache HTTPClient 和 Spring RestTemplate。在文件较小的这两种情况下,它都按预期工作,但是对于大文件,加密 API 仅接收部分数据,并且似乎卡在那里。原始调用方(文件传输服务)也没有得到任何响应并挂起。两种实现中的行为是相同的。
使用 HTTPClient 实现:
使用 Spring RestTemplate 实现:
这两种情况都在处理小文件,但挂在大文件上。我试图将请求 IOUtils.copy 包装在“可运行”线程中,但仍然是同样的问题。
java - 我在 java 中收到 java.util.MissingFormatArgumentException: Format specifier '%s' 错误
我得到一个 java.lang.RuntimeException:
我正在传递以下 JSON 文件:
到以下方法:
}
依次传递给以下方法并发送到服务器:
java - 如何使用 Post 方法测试在 Rest 服务上获取参数
我正在尝试使用 Post 方法测试获取用于处理请求的参数
- 测试方法
变体 1
变体 2
更新_1
在我的项目中,异常是这样处理的:
- dto
- 处理程序
在方法中,如有必要,我会抛出一个特定的异常......
.wsmsDefaultHandlerExceptionResolver:已解决 [org.springframework.web.bind.MissingServletRequestParameterException:必需的字符串参数“strListId”不存在]
谁知道错误是什么。请说明您需要在此处添加什么以及为什么?