我有一个带有大量参数的长 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://)。
从我的角度来看,您有两种选择:
构建(或使用)TinyURL 风格的服务 将您的长网址变成 简短的,重定向的。然而即使 在这里你会遇到 相同的 URL 长度问题,就在 浏览器本身而不是你的 运行时()语句。例如浏览器窗口将打开,转到将执行重定向到长 URL 的短 URL 并失败。
使用 POST 请求并埋入一些或 您的所有 URL 参数 它。而不是使用 GET 调用你 可以提供很长的参数 在 HTTP POST 请求的正文中。这个 不会像您的示例代码那么简单。事实上,对于 rundll32 url.dll 组合(我不熟悉它),这可能非常棘手(或不可能)......
关于java - "rundll32 url.dll,FileProtocolHandler"的 URL 长度限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/242579/