如何从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请求。
GET和POSTurl之间存在差异
在GET url中,参数是URL的一部分,在POST中,它们是Request-body的一部分。
因此在POST中 ,URL 可能包含也 可能不包含请求参数 ,除非您在URL中没有它,否则无法提取。
POST请求方法旨在请求Web服务器接受请求消息正文中包含的数据以进行存储。 1通常在上传文件或提交完整的网络表单时使用。
所以,除非你有POST请求的正文。 很难提取参数。
通常,您需要HTTP服务器端的HTTP请求参数。 Java HTTP服务器将解析请求并将其作为ServletRequest对象传递给Servlet.service方法。 ServletRequest具有访问请求参数的方法。