Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取字符串url并对其进行编码的最佳方法是什么_Java_String_Url_Encoding - Fatal编程技术网

Java 获取字符串url并对其进行编码的最佳方法是什么

Java 获取字符串url并对其进行编码的最佳方法是什么,java,string,url,encoding,Java,String,Url,Encoding,我觉得我一定是漏掉了正确的线索,因为这似乎在之前就已经得到了明确的回答,如果是重复的话,我很抱歉。我在这里和其他地方读了很多帖子,但我并没有看到一个明确的答案“这就是你们怎么做的” 程序将接收字符串形式的完整URL。例如: "http://www.stackoverflow.com/questions/somepage?somequery#somefragment" 我想获取这个字符串,并确保它被正确编码,以便在HttpClient之类的连接中使用 从我所读到的内容来看,这样做的方法似乎是使用U

我觉得我一定是漏掉了正确的线索,因为这似乎在之前就已经得到了明确的回答,如果是重复的话,我很抱歉。我在这里和其他地方读了很多帖子,但我并没有看到一个明确的答案“这就是你们怎么做的”

程序将接收字符串形式的完整URL。例如: "http://www.stackoverflow.com/questions/somepage?somequery#somefragment"

我想获取这个字符串,并确保它被正确编码,以便在HttpClient之类的连接中使用

从我所读到的内容来看,这样做的方法似乎是使用URI()构造函数,将各个部分作为参数。这就引出了一个问题,什么是获取字符串url的最可靠的方法,除了url之外,我们对它一无所知,并将其分解为URI()构造函数所需的各个部分

这是我拼凑的。这种方法有缺陷吗

URL url = new URL(urlString);
URI uri = new URI(url.getProtocol(), url.getAuthority(), url.getPath(), url.getQuery(), null);
然后,uri变量包含一个已编码的即用uri。到目前为止,这段代码仍然有效,但我希望确保不会出现任何可能出现的陷阱


谢谢

我认为没有必要构造URI。使用“url url=newurl(urlString);”构造的url对于HttpClient来说是完全有效的,除非url构造引发了一个错误的FormedUrlexception


如果要有一个查询字符串(用于GET),那么必须使用它

在某些情况下,URI类会执行其组件字段的转义管理URL编码和解码的推荐方法是使用URI,并使用toURI()和URI.toURL()在这两个类之间进行转换。 参考:

注意,任何符合RFC 2396的URL实例都可以转换为URI。但是,某些不严格符合要求的URL无法转换为URI


URI.toURL是一种方便的方法,其工作原理就好像调用它等同于在首先检查此URI是否为absolut*e之后计算表达式
新URL(this.toString())
*一样

对于字符串操作,应该避免使用URL类,因为对其调用某些方法会导致网络I/O。谢谢。我意识到了这种情况,但我读过一些文章,这些文章在最近的版本中被修复了……但我想不起来是在哪里