如何在Java中构建URL或URI?是否有惯用的方式,或者很容易做到这一点的库?
我需要允许从请求字符串开始,解析/更改各种URL部分(方案,主机,路径,查询字符串)并支持添加和自动编码查询参数.
这是一个非常基本的问题.但我无法在Java文档中找到答案,也无法测试它,因为我不知道这种方法是否存在.
我可能会收到一个URL字符串
http://www.example1.com
要么
http://www.example1.com/
然后我将获得可能开始的资源路径/api/v1/status.xml或者它会是什么样的api/v1/status.xml
我正在查看URL类,我可以处理第一部分,即获取hostURL以使其成为HTTPS或HTTP请求.问题是附加资源路径.要么我必须手动检查它是否是第一个字母/.我想知道这个功能是否已经在某个类中.
在我使用的大部分代码中都有可怕的东西,比如:
String url = "../Somewhere/SomeServlet?method=AMethod&id="+object.getSomething()+ "&aParam="+object.getSomethingElse());
Run Code Online (Sandbox Code Playgroud)
或者 - 更糟糕的是:
String url = "Somewhere/Here/Something.jsp?path="+aFile.toString().replace("\\","/")+ "&aParam="+object.getSomethingElse());
Run Code Online (Sandbox Code Playgroud)
有没有正确的方法:
从本质上讲 - 构建字符串要比正确地完成字符串要容易得多.有没有办法正确地做到这一点就像建立字符串一样简单?
添加
为了清楚起见 - 经过一番思考 - 我想我正在寻找类似的东西:
String s = new MyThing()
.setPlace("Somewhere/Something.jsp")
.addParameter(aName,aValue)
.addParameter(aName,aFile)
.toString();
Run Code Online (Sandbox Code Playgroud)
因此它将处理转义的所有不愉快并添加"?"/"&"并将"\"更改为"/"而不是使用"\"作为文件等.
如果我必须自己编写一个(即如果Apache不是一个选项),那么有真正的Java技术可以正确地转义各个部分.我的意思是在参数中将""转换为"".而逃避""在其他地方"%20".
是否有一个广泛使用的Java库,它执行类似dojo.objectToQuery()的操作?例如(假设使用HttpCore的HttpParams对象,但任何键值映射都会这样做):
HttpParams params = new BasicHttpParams()
.setParameter("foo", "bar")
.setParameter("thud", "grunt");
UnknownLibrary.toQueryString(params);
Run Code Online (Sandbox Code Playgroud)
应该产生"foo = bar&thud = grunt".
我知道写起来并不难,但似乎应该已经写好了.我找不到它.