2017-08-31 2 views
1

ich ein Stück Code haben, die aus der URL selektiven Parameter entferntEntfernen Sie alle url params

public String stripAndApplyTags(final List<NameValuePair> tags, final String url) throws URISyntaxException { 
    final URIBuilder existingLinkUrl = new URIBuilder(url); 
    List<NameValuePair> existingTags = existingLinkUrl.getQueryParams(); 
    List<NameValuePair> newTags = new ArrayList<>(); 

    for (Iterator<NameValuePair> queryParameterItr = existingTags.iterator(); queryParameterItr.hasNext();) { 
     NameValuePair queryParameter = queryParameterItr.next(); 
     if (!queryParameter.getName().equals("test")) { 
      newTags.add(queryParameter); 
     } 
    } 
    newTags.addAll(tags); 
    return existingLinkUrl.clearParameters().setParameters(newTags).build().toString(); 
} 

Aber das Problem ist, wenn meine URL dieser Form an ist -

https://somexyzz/test=s9u_simh_gw_i1?ie=UTF8 

Gibt es eine Möglichkeit für mich, dieses zusätzliche Test-Tag mit URIBuilder zu entfernen?

+2

Ist das überhaupt eine gültige URL? – shmosel

+0

'https: // somexyzz/test = s9u_simh_gw_i1? Dh = UTF8' ist falsches Format. Wenn "test = s9u_simh_gw_i1" ein URL-Parameter ist, muss die richtige URL "https: // somexyzz /? Test = s9u_simh_gw_i1 & ie = UTF8" sein, dann können Sie find by parameterName verwenden. Wenn 'test = s9u_simh_gw_i1' kein Abfrageparameter ist, kann er nicht von QueryParams abgerufen werden. –

+0

Welche Klasse ist' URIBuilder'? – shmosel

Antwort

0

Gibt es eine Möglichkeit für mich, diesen zusätzlichen Test-Tag UriBuilder mit entfernen?

ja, können Sie das URL-Objekt erstellen und die erforderlichen Informationen erhalten:

public static void main(String[] args) throws ParseException, MalformedURLException { 
    String foo = "https://somexyzz/test=s9u_simh_gw_i1?ie=UTF8"; 
    URL myUrl = new URL(foo); 
    System.out.println("protocol = " + myUrl.getProtocol()); 
    System.out.println("authority = " + myUrl.getAuthority()); 
    System.out.println("host = " + myUrl.getHost()); 
    System.out.println("port = " + myUrl.getPort()); 
    System.out.println("path = " + myUrl.getPath()); 
    System.out.println("query = " + myUrl.getQuery()); 
    System.out.println("filename = " + myUrl.getFile()); 
    System.out.println("ref = " + myUrl.getRef()); 
} 
0

Dadurch werden alle queryParams aus Ihrer URL entfernen

URIBuilder b = new URIBuilder(url); 
b.removeQuery();