java - "rundll32 url.dll,FileProtocolHandler"的 URL 长度限制?

标签 java windows url

我有一个带有大量参数的长 URL,我想在 Windows 系统上使用 Java 在默认浏览器中打开

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+url)

对于像“http://www.google.com”这样的短 URL,这工作正常。但是对于长 URL(比如 2000 个字符),这根本什么都不做:没有异常(exception)或类似的任何事情,它只是被忽略。

是否有字符限制 a) Runtime.exec 命令或 b) rundll32 url.dll 命令?如果可以,限制是多少?

最佳答案

您将遇到 this (archived)操作系统/浏览器特定的最大 URL 长度问题:

对于“rundll32 url.dll”(即 Microsoft IE),您将被限制为 2,083 个字符(包括 http://)。

从我的角度来看,您有两种选择:

  1. 构建(或使用)TinyURL 风格的服务 将您的长网址变成 简短的,重定向的。然而即使 在这里你会遇到 相同的 URL 长度问题,就在 浏览器本身而不是你的 运行时()语句。例如浏览器窗口将打开,转到将执行重定向到长 URL 的短 URL 并失败。

  2. 使用 POST 请求并埋入一些或 您的所有 URL 参数 它。而不是使用 GET 调用你 可以提供很长的参数 在 HTTP POST 请求的正文中。这个 不会像您的示例代码那么简单。事实上,对于 rundll32 url.dll 组合(我不熟悉它),这可能非常棘手(或不可能)......

关于java - "rundll32 url.dll,FileProtocolHandler"的 URL 长度限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/242579/

相关文章:

python - 如何解决 python 导入错误 - DLL 访问被拒绝

c# - 在 URL 或 cookie 中安全传输对象的注意事项

java 。如何等待?

java - (Java 12) 当库作为插件加载时 JAXB 不工作

java - 在 Java 中使用 for 循环对 8x8 block 进行分组

java - serversocket 类如何在同一端口上为多个客户端连接提供服务?

windows - 使用 "dotnet dev-certs https"创建的证书的默认位置是什么

windows - psql "more is not recognized"错误

node.js - "npm help update"(在 Windows 中)给出无效 URL 错误

android - 如何使包含下划线的文本 URL 工作