2

我想要一种 Java 方法来提取 URL 的参数,而不管这些参数是如何写入其中的,以常规方式(如https://www.facebook.com/Doly.mohamed.Smile9?ref=stream&hc_location=stream)这很容易,因为我所要做的就是:

URL url = new URL("www.blabla....etc");

String query = url.getQuery();

try{
String [] params = query.split("&");

for(int i= 0 ; i < params.length; i++){
    String [] split = params[i].split("=");
    parameters.put(split[0], split[1]);
}
}catch(NullPointerException ex){}

所以参数值将是:

key = ref  value = stream ,  key = hc_location value = stream

但是如果 URL 有以另一种方式写入的参数,或者如果 URL 没有像这种doPost()方式那样写入参数,我该怎么办。

有没有一种方法可以在不使用 servlet 的情况下从 URL 获取 extraPathInfo ?

4

3 回答 3

3

您可以使用 Apache 的 HTTP 实用程序轻松做到这一点。

URIBuilder uriBuilder = new URIBuilder(uriString);
List<NameValuePair> urlParameters = uriBuilder.getQueryParams();
String uriWithoutParameters = uriBuilder.clearParameters().toString();

例如,现在您可以使用 http utils API 中的其他类轻松地将 GET 请求转换为 POST 请求。

于 2014-03-05T07:24:14.577 回答
0

GETPOST url有区别

GET url 中,参数是 URL 的一部分,而在POST中,它们是 Request-body 的一部分。

因此,在POST中,URL可能包含也可能不包含请求参数,除非您在 URL 中没有它们,否则无法提取它们。

POST 请求方法旨在请求 Web 服务器接受包含在请求消息正文中的数据以进行存储。1 它通常在上传文件或提交完整的 Web 表单时使用。

所以除非你有 POST 请求的正文。很难提取参数。

于 2013-05-23T07:59:09.813 回答
0

通常,您需要 HTTP 服务器端的 HTTP 请求参数。Java HTTP 服务器将解析请求并将其作为 ServletRequest 对象传递给 Servlet.service 方法。ServletRequest 具有访问请求参数的方法。

于 2013-05-23T08:06:47.643 回答