How to extract parameters from a URL regardless the way it written by?

这一生的挚爱 提交于 2019-12-08 01:54:36

问题


I want a java way to extract the parameters of a URL regardless the way these parameters are written in it, in the regular way like( https://www.facebook.com/Doly.mohamed.Smile9?ref=stream&hc_location=stream ) it's so easy because all i have to do is :

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){}

so the parameters values would be :

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

but what shall i do if the URL has parameters written in another way or if the URL does't has it's parameters written in it like in the case of the doPost() way.

and is there is a way to get the extraPathInfo from a URL without using servlets?


回答1:


You could do that easily with Apache's HTTP utils.

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

Now you could, for example, easily convert the GET request to a POST request, using other classes from the http utils API.




回答2:


There is a difference between GET and POST urls

In GET url, parameters are part of URL and in POST they are part of Request-body.

So in POST, the URL may or may not contain the request params, and unless you don't have them in the URL its not possible to extract.

The POST request method is designed to request that a web server accept the data enclosed in the request message's body for storage.1 It is often used when uploading a file or submitting a completed web form.

So unless you have the POST request's body. Its difficult to extract the Parameter.




回答3:


Typically you need HTTP request parameters on HTTP server side. Java HTTP server will parse the request and pass it as ServletRequest object to Servlet.service method. ServletRequest has methods to access the request parameters.



来源:https://stackoverflow.com/questions/16708436/how-to-extract-parameters-from-a-url-regardless-the-way-it-written-by

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!