如何查找java中是否存在包含特殊字符或空格的url

如何查找java中是否存在包含特殊字符或空格的url,java,http,url,networking,file-exists,Java,Http,Url,Networking,File Exists,我用下面的代码试图找到url是否存在。要求是查找url中是否存在文件 try{ HttpURLConnection.setFollowRedirects(false); HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); con.setRequestMethod("HEAD"); responseCode = con.g

我用下面的代码试图找到url是否存在。要求是查找url中是否存在文件

    try{
         HttpURLConnection.setFollowRedirects(false);
         HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
         con.setRequestMethod("HEAD");
         responseCode = con.getResponseCode();
         return Response.ok(Integer.toString(responseCode)).build();
    }
    catch(Exception e){
        return Response.ok(e.getMessage()).build();
    }

如果url不包含任何空格/特殊字符,则此操作非常有效。但如果有,它总是返回代码404。我能知道如何解决这个问题吗?提前感谢。

带有空格的URL无效。从可能包含空格的文件名创建正确编码的URL的正确方法是
URI.toascistring(),
,然后将其传递到
new URL(),
,确保使用具有多个参数的URI构造函数,以便对文件名部分进行编码:请参阅


然而,我对这一要求提出质疑。测试任何资源是否可用的最佳方法是尝试使用它。在这种情况下,如果URL存在,您可能要从中读取,因此只需执行此操作并捕获
FileNotFoundException

是否有任何特定的原因要首先解码?如果url中有特殊字符,它们将在这里被解码,并导致404。您可能希望连接到编码的url.oops。。我忘了拆下那条线。我现在已经编辑了这个节目。