【问题标题】:HttpClient = INVALID URI - Escaped absolute path not validHttpClient = INVALID URI - 转义的绝对路径无效
【发布时间】:2012-11-19 02:44:41
【问题描述】:

我正在尝试使用 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 替换。

标签: java url absolute-path apache-commons-httpclient


【解决方案1】:

我用这个得到了我想要的......

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

【讨论】:

    【解决方案2】:

    您只需将文件重命名为:

    test_file.txt or textFile.txt
    

    在编码变量或为此类创建文件时从不使用空格是常见的标准。

    使用 test_file (snake case) 或 textFile (camelCase)。

    【讨论】:

      【解决方案3】:

      使用java.net.URLEncoder.encode

      或将空格替换为“+”

      【讨论】:

      • + 仅在查询字符串和 application/x-www-form-urlencoded POST 数据中可接受。真正的编码在这里使用%20
      • 谢谢@Neil,我只是用解决方案更新我的问题。 %20 在 URL 上工作得很好。
      猜你喜欢
      • 1970-01-01
      • 2021-10-02
      • 2022-01-17
      • 2010-12-17
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      相关资源
      最近更新 更多