无论其编写方式如何,如何从 URL 中提取参数?

Posted

技术标签:

【中文标题】无论其编写方式如何,如何从 URL 中提取参数?【英文标题】:How to extract parameters from a URL regardless the way it written by? 【发布时间】:2013-05-18 11:43:51 【问题描述】:

我想要一种 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?

【问题讨论】:

在 POST 数据的情况下,没有通用的方法来解析参数。 POST 数据可以是任何东西——甚至是序列化的 java 对象。你必须知道你期望得到什么并解析它。如果解析不起作用,则返回一些错误代码。 有没有标准的方式把参数写在http body里面呢? 【参考方案1】:

GETPOST url 之间有区别

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

所以在 POST 中,网址可能可能不包含 请求参数,除非您不这样做'在 URL 中没有它们是不可能提取的。

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

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

【讨论】:

但是有办法获取发布请求并对其进行分析吗?并且还知道不使用 servlet 从 URL 获取(额外路径信息)的方法吗? 基本上一个 HTTP 请求是一个字符串,用一些协议编写。 URL 是一个地址。使用 POST URL,您无法找到参数,但使用整个 POST 请求,您可以。这就是我想要解释的【参考方案2】:

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

【讨论】:

【参考方案3】:

您可以使用 Apache 的 HTTP 工具轻松做到这一点。

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

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

【讨论】:

以上是关于无论其编写方式如何,如何从 URL 中提取参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript/jquery 从 url 中提取文件名?

如何从 Javascript 中的 URL 中提取 GET 参数? [复制]

如何获取url参数并将其设置为文本框onload的默认值

如何从完整的 html 文本中从 <a> 标记中提取 url GET 参数

如何从 url 导入 javascript 库并将其存储在变量中?

请教如何用php提取图片url地址