我需要将参数值编码到URL中。如果我使用下列内容:使用Java编码URL中的参数值
URLEncoder.encode(url, "UTF-8");
像这样的URL:http://localhost:8080/...
将编码“://”等我需要的仅仅是从开始的参数值编码的所有网址字符串。因此,在这种情况下:
http://localhost/?q=blah&d=blah
我想编码只在2个参数值(当然-n参数)的“嗒嗒”。
你最好的方法是什么?
感谢
随机化
我需要将参数值编码到URL中。如果我使用下列内容:使用Java编码URL中的参数值
URLEncoder.encode(url, "UTF-8");
像这样的URL:http://localhost:8080/...
将编码“://”等我需要的仅仅是从开始的参数值编码的所有网址字符串。因此,在这种情况下:
http://localhost/?q=blah&d=blah
我想编码只在2个参数值(当然-n参数)的“嗒嗒”。
你最好的方法是什么?
感谢
随机化
你以错误的方式使用URLEncoder的。您应该分别编码每个参数值,然后将url组合在一起。
例如
String url = "http://localhost/?q=" + URLEncoder.encode ("blah", "UTF-8") + "&d=" + URLEncoder.encode ("blah", "UTF-8");
对于像http://localhost/hello/sample?param=bla一个网址,你可以使用这个(从Java的java.net.URI中的类):
URI uri = new URI("http", "localhost", "/hello/sample", "param=bla", null);
String url = uri.toASCIIString();
这种方式需要使用URLEncoder预编译查询字符串来编码特殊字符。事实证明Randomize将整个网址作为输入,而不是其中的部分。 –
那么,URL可以很容易地分解(分割)成这些部分,并传递。 – Saket
是的,我知道,问题是,我得到了一个网址已“完成”,我无法更改生成它的代码 – Randomize
为什么您需要对其进行编码?它是否包含非ASCII字符? –
然后你需要建立一个'URL'并得到参数(或者如果你对URL的有效性有信心,可以将它分割成第一个'?'),把它们分成'&'(如果你不想那么做编码),编码它们,然后重建它。 –