spring Resttemplate url 编码

2024-02-18

我尝试使用 springs Resttemplate 进行简单的休息调用:

private void doLogout(String endpointUrl, String sessionId) {
    template.getForObject("http://{enpointUrl}?method=logout&session={sessionId}", Object.class,
            endpointUrl, sessionId);
}

其中 endpointUrl 变量包含类似 service.host.com/api/service.php 的内容

不幸的是,我的调用导致 org.springframework.web.client.ResourceAccessException: I/O error: service.host.com%2Fapi%2Fservice.php

所以 spring 似乎在创建 url 期间对我的 endpointUrl 字符串进行了编码。有没有一种简单的方法可以防止 spring 这样做?

Regards


没有简单的方法可以做到这一点。 URI 模板变量通常用于路径元素或查询字符串参数。您正在尝试超越主机。理想情况下,您会找到更好的解决方案来构建 URI。我建议榆次的解决方案 https://stackoverflow.com/a/27550501/438154.

如果您仍然想使用 Spring 实用程序和模板扩展,一种解决方法是使用UriTemplate使用 URI 变量生成 URL,然后对其进行 URL 解码并将其传递给您的RestTemplate.

String url = "http://{enpointUrl}?method=logout&session={sessionId}";
URI expanded = new UriTemplate(url).expand(endpointUrl, sessionId); // this is what RestTemplate uses 
url = URLDecoder.decode(expanded.toString(), "UTF-8"); // java.net class
template.getForObject(url, Object.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring Resttemplate url 编码 的相关文章

  • 从 java 程序中编译 .java 文件?

    我找到了这段代码 JavaCompiler compiler ToolProvider getSystemJavaCompiler if compiler run null null null fileName 0 System err p
  • 如何检查用于编译.class文件的jdk版本[重复]

    这个问题在这里已经有答案了 可能的重复 读取和显示 Java class 版本的工具 https stackoverflow com questions 27065 tool to read and display java class v
  • 用java实现我自己的远程桌面

    我正在尝试用java实现我自己的远程桌面解决方案 使用套接字和 TCP UDP 我知道我可以使用 VNC 或其他任何东西 但我想做的是学校的作业 因此 为了移动鼠标并单击 我可以使用 Robot 类 我对此有两个问题 发送视频怎么样 我知道
  • Mockito.any() 通过泛型接口

    是否可以通过泛型传递接口的类型 界面 public interface AsyncCallback
  • 有哪些方法可以避免 String.substring 返回具有无效 unicode 字符的子字符串?

    最近 只有我注意到 有可能substring返回带有无效 unicode 字符的字符串 例如 public class Main public static void main String args String text Salade
  • Spring boot JPA不使用findById返回现有结果

    我使用 Oracle 数据库和一些 JPA 查询创建了一个非常小且简单的 Spring Boot 应用程序 这是不返回数据的代码片段 该数据实际上存在于数据库中 letterRecipientNonOas letterRecipientNo
  • Java:用于确定等效性的外部类?

    Java 有一个Comparator
  • 使用 JaxRS 自定义 JSON 序列化

    在 Web 服务调用中 我想返回具有此 JSON 结构的对象 date 30 06 2014 price val 12 50 curr EUR 我想将此 JSON 代码映射到此 Java 结构 使用乔达时间 http www joda or
  • GSON 中的自定义反序列化?

    我需要创建一个自定义反序列化器 以便我可以正确反序列化我以此格式收到的日期 2011 10 19T23 30 00 04 00 我的 Date 对象是许多字段之一 包含我正在反序列化的对象的许多嵌套类之一 除了日期之外 一切正常 我的班级是
  • Spring WebFlux、安全性和请求正文

    我需要使用请求正文的 HMAC 来保护使用 Spring Boot WebFlux 和 Spring Security 实现的 REST API 稍微简化一下 在较高的层面上 请求附带具有请求正文的哈希值的标头 因此我必须读取标头 读取正文
  • JVM如何处理不同版本的重复JAR

    当存在不同版本的重复 JAR 时 行为会非常不一致 有谁知道 JVM 如何处理重复项 类加载器按顺序搜索类路径 并使用它找到的第一个匹配的类
  • Java 中等效的并行扩展

    我在 Net 开发中使用并行扩展有一些经验 但我正在考虑在 Java 中做一些工作 这些工作将受益于易于使用的并行库 JVM 是否提供任何与并行扩展类似的工具 您应该熟悉java util concurrent http java sun
  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection

随机推荐

  • 返回值存储在内存的什么位置?

    返回值存储在内存的什么位置 考虑以下代码 int add int a int b int result a b return result void main int sum add 2 3 When add 2 3 被调用时 2个函数参数
  • 2012 年附加到流程

    我们曾经在 VS 2010 中附加了进程宏 这非常方便 既然宏在 Visual Studio 2012 中消失了 是否存在可以为我们执行此操作的插件 我们的宏将附加到 w3 exe 进程 这非常漂亮 也许我需要将宏转换为插件 我使用这个扩展
  • 神奇记录迁移失败“找不到源存储的模型”

    我们对 CoreData 模型进行了一些更改 看起来自动迁移失败了 即使我们将当前模型设置为用于生成数据的原始模型 仍然会出现错误 Reason 找不到源商店的模型 2014 09 05 02 19 43 297 948 166846 LB
  • 用户“postgres”的 Docker 密码身份验证失败

    我正在编写一个 docker compose 文件来启动一些服务 但数据库服务是个麻烦制造者 我总是收到此错误 FATAL password authentication failed for user postgres DETAIL Pa
  • 这个错误应该被修复吗?

    昨天我在 Net框架中发现了一个bug 并且发现这是一个已知的bug 不会被修复 简而言之 该错误在于 当将 int 以及可能的其他二进制类型 分配给该字段时 包含 IComparable 类型字段的类无法进行二进制序列化和反序列化 Ser
  • 类型错误:无法从 ndarray 中减去 DatetimeArray

    我的数据框中有两列 开始日期和完成日期 它是时间戳 我想通过找出差异来计算运行时间 当我运行下面的代码时 出现错误 TypeError cannot subtract DatetimeArray from ndarray 我也无法将完成日期
  • 如何撤消 Redux 异步操作? (状态后退多步)

    如果我有一个带有 api 调用的异步操作 它可以是一个操作返回一个函数 export function asyncAction itemId return dispatch gt dispatch requestStarted return
  • 检查数字是否具有相同的符号

    我遇到过这个 检查两个整数是否具有相同符号的最简单方法 https stackoverflow com questions 66882 simplest way to check if two integers have same sign
  • .Net CodeDom - 在 .net 中实现 lambda 表达式

    我想使用 CodeDom 写这样的东西 Where x gt x Id 2 我不知道 CodeDom System CodeDom 中与此等效的是什么 简短回答 CodeDOM 不支持 lambda 长答案 CodeDOM 不支持 lamb
  • 如何使用自定义比较器比较两个数组列表是否相等?

    具体来说 我有两个清单 List
  • 如何以编程方式关闭视频加速

    我在数百台计算机 专用 上运行的程序中使用 Windows Media Player OCX 我发现当视频加速打开到 全 时 在某些计算机上会导致视频无法正确播放 电影之间出现绿色方块等 将加速度设置为 无 一切正常 该程序在大约 800
  • Flutter:构建期间调用 setState() 或 markNeedsBuild()

    我有一个显示视频的页面 但是当我完成视频并弹回到上一页时 我收到以下错误 我的应用程序运行得很好 没有中断 但是下面的错误让我很困扰 构建期间调用 setState 或 markNeedsBuild 是我无法修复的错误 我需要帮助来修复此错
  • ElasticSearch:使用匹配的搜索词标记文档

    我正在使用 elasticsearch 1 7 并且需要一种方法来标记文档与它们匹配的 query string 查询的部分 我一直在尝试突出显示 但发现在某些情况下它会变得有点混乱 我希望用匹配的搜索词标记该文档 这是我正在使用的查询 注
  • 在不启动 PHP 会话的情况下检查 PHP 会话?

    是否可以在不启动会话的情况下检查会话 我问的原因是 我正在开发的应用程序有一个集成的管理界面 因此 当管理员登录时 他们会浏览与用户相同的页面来进行编辑 字段和选项根据用户权限显示 这导致了两个问题 One因为会话正在启动 所以我无法启用浏
  • 当我将铃声模式设置为 RINGER_MODE_SILENT 时,手机仍然振动,并且菜单中的图标设置为“振动”图标

    当我执行这段代码时 mAudioManager setRingerMode AudioManager RINGER MODE SILENT 我顶部菜单栏中的图标设置为振动图标 并且振动设置设置为振动而不是静音 我对 静音 的期望是没有振动
  • Electron 是针对不同的 Node.js 版本编译的

    我正在构建一个预计在 Ubuntu 20 xx Linux 和 Raspberry Pi 运行 Raspbian 和 arch armv7l 上运行的 Electron 应用程序 但收到以下错误 was compiled against a
  • 如何触发gitlab中的特定作业

    我想在管道中运行特定的作业 我认为为该作业分配一个标签 然后在 post 方法中再次指定该标签将满足我的需求 问题是当我使用 api post 触发时 所有作业尽管只有其中一个已标记 但管道中会触发事件 gitlab ci yml 工作1
  • Android TextView 去除顶部和底部空间的方法

    当我包括以下内容时XML to layout文件 我可以看到下图 如果你看到它 你就会意识到TextView有顶部和底部空间
  • 适用于 Visual Studio 2008 的 Windows CE SDK

    我是 Windows CE 编程新手 我有 Visual Studio 2008 和 Visual Studio 2005 我找到了以下适用于 Windows Mobile 的 SDK 请帮助我确定这是否是正确的 或者请随时将我重定向到正确
  • spring Resttemplate url 编码

    我尝试使用 springs Resttemplate 进行简单的休息调用 private void doLogout String endpointUrl String sessionId template getForObject htt