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

我想要一种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()方式那样在其中写入参数,我该怎么办?

有没有办法从URL获取extraPathInfo而不使用servlet?

您可以使用Apache的HTTP工具轻松完成。

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

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

GETPOSTurl之间存在差异

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

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

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

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

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