HttpClient = 无效的URI - 转义的绝对路径无效

7
我正在尝试使用HttpClient上传/删除文件到WebDAV服务器。然而,每当我有一个包含空格的文件名时,都无法正常工作。我收到了一个错误消息,上面写着“INVALID URI--- Escaped absolute path not valid”。这是我的URL =“http://localhost:8080/test file.txt”。
private boolean delete(String fileName) {
    HttpClient client = new HttpClient();
    HttpHost host = new HttpHost(WEBDAV_URL, PORT_NUMBER);
    client.getHostConfiguration().setHost(host);
    DeleteMethod del = new DeleteMethod(WEBDAV_URL_COMPLETE + fileName);
    try {
        client.executeMethod(del);
        return true;
    } catch (HttpException e) {
        e.printStackTrace();
        return false;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}

有没有什么方法或URL解析器可以用来解决这个问题?

谢谢。

编辑,通过将空格替换为"%20"找到了解决方案。

**

URL.replaceAll(" ","%20")

**


我曾经遇到过同样的问题。但是URL中包含了“-”,在这种情况下,我需要将其替换为%2D。 - digao_mb
3个回答

5

我使用这个方法得到了我想要的...

URL.replaceAll(" ","%20")

(将URL中的空格替换为"%20")

2

使用java.net.URLEncoder.encode

或者用加号替换你的空格


“+” 只能在查询字符串和 application/x-www-form-urlencoded POST 数据中使用。真正的编码在这里使用 "%20"。 - Neil
谢谢@Neil,我刚刚更新了我的问题并提供了解决方案。%20在URL上运行得很好。 - david

1

你只需要将文件重命名为:

test_file.txt or textFile.txt

在编写变量或创建文件时,通常的标准是不使用空格。

使用test_file(蛇形命名法)或textFile(驼峰命名法)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接