java - URL 中文件路径的 blackslah 问题

标签 java windows web-services url jms

我们有一个中间件,它可以根据收到的不同类型的请求生成一个 URL 来下载一些文件。 现在我们的中间件部署在windows环境下。因此,在生成附加文件路径的 url 时,我们使用操作系统的默认路径分隔符。对于 Windows,默认文件路径分隔符是 /,即反斜杠。如果您想知道为什么 Windows 的文件分隔符是 / 我这里有一个不错的博客 here .

因此生成的网址通常如下所示。

https://test.com:9000/elearning/filedownload?file-path=bulk\AssembledBDEFile1_1455748875242.xml

您可以观察到,由于默认的文件路径分隔符,在 bulk 关键字后开始了反斜杠。

此中间件由不同的第三方应用程序使用。问题是第三方不接受这个 url,他们说,所有通信都是通过 Web 协议(protocol)进行的,因此只应出现正斜杠,并在使用\时抛出异常。我们使用操作系统默认文件分隔符,因为我们想让我们的中间件平台依赖。

我们要求他们接受/和\组合的网址,但他们不接受我们的请求,说\不是网络协议(protocol)的一部分。

所以我只想知道使用\是否违反网络协议(protocol),而我们的做法是错误的。意味着我们必须改变我们的中间件,或者我们应该强制他们改变他们的代码。

谁能解释一下\在网络协议(protocol)中的作用吗???

最佳答案

反斜杠 \ 不是 URL 中允许的字符,因此您需要应用 percent-encoding并将其写为%5C:

https://test.com:9000/elearning/filedownload?file-path=bulk%5CAssembled...

关于java - URL 中文件路径的 blackslah 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35983095/

相关文章:

java - 如何在soapUI中获取web服务响应的值?

java - JDialog 出现时没有任何内容

c++ - DLL包装器和DLL之间的区别

web-services - ORA-14552 : cannot perform a DDL, 在查询或 DML 中提交或回滚

java - 使用不同参数调用 REST WS

c++ - 如何在程序内存中搜索images/png/jpeg/任何其他类型并显示它?

java - 为什么这个 Spring Aspect 没有按方法参数打印?

java - Spring Boot 测试 - @WithMockUser 发布的内容为空

java - 编写方法 containsInstanceOf(Class<? extends SuperClassName>)

c# - 如何 : Prevent Timeout When Inspecting Unavailable Network Share - C#