在 Java 中解码 URI 查询字符串

2023-12-30

我需要解码包含查询字符串的 URI;预期的输入/输出行为如下:

abstract class URIParser
{       
    /** example input: 
      * something?alias=pos&FirstName=Foo+A%26B%3DC&LastName=Bar */
    URIParser(String input) { ... }
    /** should return "something" for the example input */
    public String getPath(); 
    /** should return a map 
      * {alias: "pos", FirstName: "Foo+A&B=C", LastName: "Bar"} */
    public Map<String,String> getQuery();
}

我尝试过使用java.net.URI http://java.sun.com/j2se/1.5.0/docs/api/java/net/URI.html,但它似乎对查询字符串进行了解码,因此在上面的示例中,我留下了“alias=pos&FirstName=Foo+A&B=C&LastName=Bar”,因此“&”是查询分隔符还是其中的字符存在歧义一个查询组件。

Edit:我刚刚尝试过URI.getRawQuery() http://java.sun.com/j2se/1.5.0/docs/api/java/net/URI.html#getRawQuery%28%29它不进行编码,所以我可以用一个分割查询字符串&,但那我该怎么办呢? JavaScript 有解码URI组件 https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/decodeURIComponent,我在Java中好像找不到对应的方法。

有什么建议么?我不想使用任何新的库。


Use

URLDecoder.decode(proxyRequestParam.replace("+", "%2B"), "UTF-8")
          .replace("%2B", "+")

模拟decodeURIComponent。爪哇的URLDecoder将加号解码为空格,这不是您想要的,因此您需要替换语句。

Warning: the .replace("%2B", "+")在最后will损坏你的数据if正如@xehpuk 指出的那样,原始文件(x-www-form-urlencoded 之前)包含该字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中解码 URI 查询字符串 的相关文章

  • 在Java中将*s打印为三角形?

    我在 Java 课程中的作业是制作 3 个三角形 一份左对齐 一份右对齐 一份居中 我必须为什么类型的三角形制作一个菜单 然后输入需要多少行 三角形必须看起来像这样 到目前为止 我能够完成左对齐的三角形 但我似乎无法获得其他两个 我尝试用谷
  • 如果列名不同,则一对多休眠连接

    我有三个具有以下结构的表 合同 gt Contract id 主要 customer company id Vendor company id 公司 gt Company id 主要 创建日期 创建者 Company Timeline gt
  • 如何在 Java 中访问嵌套的 HashMap?

    我有一个 Java 中的 HashMap 其中的内容 你们可能都知道 可以通过以下方式访问 HashMap get keyname 如果一个 HashMap 位于另一个 HashMap 中 即嵌套的 HashMap 我将如何访问内容 我可以
  • Quarkus 不以编程方式选择 bean

    我试图以编程方式选择 bean 但 quarkus 不会注入 bean 并引发异常 不支持吗 public enum ReportType ONE TWO Qualifier Retention RUNTIME Target METHOD
  • 如何配置 Spring-WS 以使用 JAXB Marshaller?

    感谢您到目前为止对此的帮助 我正在更新问题 因为我没有显示我需要的所有内容 并显示了建议的更改 肥皂输出仍然不是我想要的 servlet xml
  • Java 读取大文本文件时出现 OutOfMemoryError

    我是 Java 新手 正在读取非常大的文件 需要一些帮助来理解问题并解决它 我们有一些遗留代码 必须对其进行优化才能正常运行 文件大小仅在 10mb 到 10gb 之间变化 只有当文件开始大小超过 800mb 时才会出现启动问题 Input
  • Java:线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:

    我是初学者 谁能帮我弄清楚我们在做什么 我正在尝试读取字符串并将字符串的每个字符存储在数组中 import java util Scanner public class CoreMainDigitExtractor static Scann
  • 迁移到Java 9或更高版本时是否需要切换到模块?

    我们目前正在从 Java 8 迁移到 Java 11 但是 升级我们的服务并没有我们预期的那么痛苦 我们基本上只需要更改我们的版本号build gradle文件和服务都顺利启动并运行 我们升级了库以及使用这些库的 微 服务 到目前为止没有问
  • 尝试获取屏幕上绘制的每个随机圆圈的 x、y 坐标

    您好 我正在制作一款游戏 该游戏将在屏幕上创建随机圆圈 随机创建的圆圈的值为红色或绿色 我的问题是 我希望不仅能够确定用户何时单击其中一个圆圈 而且还能够确定他们最终单击的圆圈 红色或绿色 下面是我的代码 我的主要问题是试图找到将要绘制的圆
  • javax.persistence.RollbackException:提交事务时出错],根本原因是 java.lang.StackOverflowError:null

    我有一个使用 Spring Data REST 框架的 Spring Boot API 从 spring boot starter parent 2 1 0 RELEASE 继承的依赖项 我正在尝试执行 PUT 或 PATCH 请求来更新实
  • java中的单链表和双向链表?

    在java中 哪个集合接口可以有效地实现单链表和双向链表 请问代码示例吗 毫不奇怪 实现双向链表的正确接口是 LinkedList 看Java文档 http docs oracle com javase 8 docs api java ut
  • Android WebView文件上传

    我正在开发一个 Android 应用程序 基本上它是一个WebView和一个进度条 Facebook 的移动网站 m facebook com 已加载到WebView 当我单击 选择文件 按钮上传图像时 没有任何反应 我已经尝试了所有的解决
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 当 JMS Prod 位于辅助 POJO 类中时,如何在事务中包含 JMS Producer

    简短的问题 有没有办法强制无状态 EJB 调用的 POJO 存在于 EJB 的上下文中 以便事务和资源注入可以在 POJO 中工作 具体来说 在我想要做的事情的上下文中 如何在 EJB 的事务中包含 POJO JMS 生产者 该生产者在调用
  • java.lang.Object的hashCode具体使用的算法是什么

    中使用的算法是什么JVM实施java lang Object的隐含的hashCode 方法 OpenJDK or Oracle JDK答案中首选 它依赖于实现 并且在很大程度上 该算法是entirely取决于实施 只要它是一致的 但是 根据
  • 如何检查日期字符串的有效性?

    在我的项目中 我需要检查日期字符串是否计算为正确的日期对象 我决定允许 yyyy MM dd 和日期格式 年 月 日 和 年 月 日 小时 分钟 我如何检查它们是否有效 我的代码为 1980 01 01 和一些奇怪的日期 如 3837 05
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • android 中的 java.net.URL ..新手问题

    我是java新手 正在尝试android开发 以下代码生成 malformedURLException 有人可以帮助我识别异常吗 任何提示都会非常有帮助 package com example helloandroid import and
  • 如何使用注释处理 Hibernate 和 Spring 中的连接查询?

    我正在使用 Spring 和 Hibernate 以及 MySQL 开发应用程序 我是 Hibernate 新手 完成了基本任务 现在我需要在选择查询中应用联接以使用注释从多个表中获取数据 我已经搜索过但仍然没有任何想法 这是我的数据库表和
  • 如何使用 Jest 从 ElasticSearch 获取索引列表

    我正在尝试使用 Jest 检索索引列表 但我只得到 Stats statistics new Stats Builder build result client execute statistics 如何从结果中检索索引列表 除了统计之外

随机推荐

  • 在 Apple M1 芯片上运行 Apache Flink 1.12 作业

    我刚刚尝试运行Apache Flink 的基本示例 https ci apache org projects flink flink docs release 1 12 try flink local installation html在配
  • 在不使用默认 ID 生成策略时,如何加载受限于集合的 RavenDB 文档

    在 RavenDB 4 v4 0 3 patch 40031 中 我有两种文档类型 Apple and Orange 两者具有相似但又不同的属性 我在运行时遇到代码中的一个错误 有时会提供 Apple 的 ID 但会返回 Orange 可怕
  • 需要命令行使用 adb 启动网络浏览器

    我怎样才能启动浏览器adb shell命令并使其打开某个网页 运行此命令将在 Android 中启动 Web 浏览器 adb shell am start a android intent action VIEW d http www st
  • Linux 中除零异常处理

    我很想了解 Linux 中除零异常处理 当执行除以零运算时 会生成陷阱 即INT0被发送到处理器并最终SIGFPE信号被发送到执行该操作的进程 正如我所看到的 除以零异常被注册在trap init 充当 set trap gate 0 di
  • 最小 tkSimpleDialog 示例中的错误

    我正在尝试一个Python代码示例罗塞塔代码 http rosettacode org wiki User input Graphical Python a 编程学 http en wikipedia org wiki Chrestomat
  • PHP+MySQL 中的 IP 黑名单

    我一直在尝试在 PHP 中实现一种 IP 黑名单 其中我将失败的登录尝试存储到具有以下架构的 MySQL 表中 CREATE TABLE blacklist ip address VARCHAR 35 NOT NULL failures I
  • extjs的安全问题[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我怎样才能让我的客户相信 extjs 可以安全使用 或者 更好的是 我如何确保我的编程在 extjs 3 x 中是安全的 以便数据不会落入坏人之
  • 使用 golang prometheus testutil 进行单元测试

    我们可以断言使用以下方法注册和收集指标testutil CollectAndCount and testutil CollectAndCompare等等 但是有没有办法通过指标名称和标签来收集指标 如果是 CounterVec 以供参考ht
  • RadGrid 在代码隐藏中应用过滤器

    我正在尝试在下拉选择的 RadGrid 过滤器中设置一个值 GridColumn column RadGrid1 MasterTableView GetColumnSafe versionId column CurrentFilterFun
  • 删除节点后树节点不扩展

    我试图在扩展节点 父节点 时替换树节点 更换效果很好 但扩张并没有发生 你有什么解决办法吗 代码如下
  • Eclipse 不会启动,并且我没有更改任何内容

    我至少一个月没有更新任何东西了 我刚刚正常工作 突然菜单全是空白 所以我决定重新启动 eclipse 我单击 关闭 和 确定 保存所有内容 但什么也没发生 所以我再次单击关闭 Eclipse 关闭 我单击了 Eclipse 加载屏幕仅闪烁并
  • 通过 Spring 3 注入 Hibernate Session 的最佳方式

    我不确定使用 Spring3 将 Hibernate 会话实例注入 DAO 类的最佳方法是什么 我没有使用 Spring 的 Hibernate 模板支持 所以这里是我在 DAO 类中的代码 public void setSessionFa
  • 使用正则表达式或其他方式替换字符串中的数字

    我不太擅长正则表达式 我正在努力寻找一个小功能的解决方案 我有一个 ajax 响应 它返回一个类似的字符串 您的工单已成功登录 请点击链接查看详情123432 我所要做的就是替换那个号码123432 with a href blablabl
  • FieldValue.increment 的 Firestore 安全规则

    我在 firestore 有一个计数器可以计算点赞数 我像这样增加它this https fireship io snippets firestore increment tips text Firestore 20Increment do
  • IIS 10 和 HTTP/2 - 需要客户端证书

    目前我正在使用 HTTP 1 1 和 HTTP 2 在 IIS 10 上测试 Web 应用程序 我的测试应用程序有一个端点 api test 它仅返回 true 我有3张证书 根 CA 自签名 由根 CA 签名的服务器证书 由根 CA 签名
  • Jupyter Notebook - 属性错误:“模块”对象没有属性“F_OK”

    每当我输入命令 jupyter notebook 时 它都会给出上面列出的属性错误 我正在通过 Anaconda Prompt 运行它 提示窗口中的内容 base C Users jj891w gt jupyter notebook Tra
  • Glide 图像缓存,带有 id 而不是 url

    我正在使用从 Amazon S3 加载图像的 Android 应用程序 图像 URL 随令牌和过期密钥随机变化 因此我无法缓存图像 Glide 有任何方法可以将 Glide 缓存键设置为任何静态 ID 如图像 id 而不是 url 我附上了
  • 使用 jQuery 迭代每个 div 属性? [复制]

    这个问题在这里已经有答案了 我正在尝试获取每个 div 的 rgb 和索引值 在控制台中我得到了正确的一切 索引和 B 每个 div 的背景颜色 尝试将每个值添加到p在每一个div我只有每个重复的最后一个值div 蓝色的十六进制和数字 5
  • 需要有关 SQL 中复杂的 Join 语句的帮助

    如何连接一个具有稀疏日期数量的表和另一个具有详尽日期数量的表 以便稀疏日期之间的间隙采用前一个稀疏日期的值 说明性示例 PRICE table sparse dates date itemid price 2008 12 04 1 1 20
  • 在 Java 中解码 URI 查询字符串

    我需要解码包含查询字符串的 URI 预期的输入 输出行为如下 abstract class URIParser example input something alias pos FirstName Foo A 26B 3DC LastNa