2011-10-02 15 views

cevap

3

Herhangi bir geçerli çözüm bulduğumu hissetmeden, şimdiki eski URIUtil HTTPClient dahil olmak üzere birkaç kitaplığı test ettim.

/** 
* Tries to construct an url by breaking it up into its smallest elements 
* and encode each component individually using the full URI constructor: 
* 
* foo://example.com:8042/over/there?name=ferret#nose 
* \_/ \______________/\_________/ \_________/ \__/ 
*  |   |   |   |  | 
* scheme  authority  path  query fragment 
*/ 
public URI parseUrl(String s) throws Exception { 
    URL u = new URL(s); 
    return new URI(
     u.getProtocol(), 
     u.getAuthority(), 
     u.getPath(), 
     u.getQuery(), 
     u.getRef()); 
} 

aşağıdaki rutin kombinasyonu kullanılabilir: Genellikle, olsa java.net.URI Bu tip yapıda yeterince başarı elde ettik. Kod çözülmüş dize değişmeyene kadar bir URL kodunu tekrar tekrar çözer, bu da örneğin çift kodlamasına karşı yararlı olabilir. basit tutmak, Not, bu örnek özelliği olmayan herhangi yedekli vb

public String urlDecode(String url, String encoding) throws UnsupportedEncodingException, IllegalArgumentException { 
    String result = URLDecoder.decode(url, encoding); 
    return result.equals(url) ? result : urlDecode(result, encoding); 
} 
1
Ben yüzde kodlama URI'ler için java.net.URLEncoder kullanılmamasını tavsiye ediyorum

. Adı rağmen buna rfc3986 standart takip etmez olarak URL'leri kodlamak için büyük değil ve bunun yerine application/x-www-form-urlencoded MIME biçiminde (read more here) Scala URI'ları ben sprey-http Uri sınıf öneriyoruz kodlayan için

için kodlar. scala-uri bir alternatiftir (yasal uyarı: Ben yazarım).

İlgili konular