2009-07-31 72 views
8

我需要編碼使用HTTP GET請求中黑莓的URL。任何人都可以幫助我找到如何實現這一目標。黑莓URL編碼器

回答

8

在這裏你去; ^)

public static String URLencode(String s) 
{ 
    if (s!=null) { 
     StringBuffer tmp = new StringBuffer(); 
     int i=0; 
     try { 
      while (true) { 
       int b = (int)s.charAt(i++); 
       if ((b>=0x30 && b<=0x39) || (b>=0x41 && b<=0x5A) || (b>=0x61 && b<=0x7A)) { 
        tmp.append((char)b); 
       } 
       else { 
        tmp.append("%"); 
        if (b <= 0xf) tmp.append("0"); 
        tmp.append(Integer.toHexString(b)); 
       } 
      } 
     } 
     catch (Exception e) {} 
     return tmp.toString(); 
    } 
    return null; 
} 
18

,WHYT你不使用RIM的URLEncodedPostData

private String encodeUrl(String hsURL) { 
    URLEncodedPostData urlEncoder = new URLEncodedPostData("UTF-8", false); 
    urlEncoder.setData(hsURL); 
    hsURL = urlEncoder.toString(); 
    return hsURL; 
} 
+0

的最佳解決方案,但不便於攜帶。鑑於他想在不同的手機上運行他的軟件,他會再次提出同樣的問題。最好的辦法是避開只能在一個平臺上運行的類。 – Toad 2009-07-31 09:24:14

+0

無法確定...在這種情況下,您是對的,因爲它不是平臺相關的功能。但仍然簡單很好,當他們問你的時候執行它。 – 2009-07-31 09:35:21

6

使用由w3提供的類。這裏是下載link

3

the reply using "URLEncodedPostData" above不正確。 修正的樣本:

public static String encodeUrl(Hashtable params) 
{ 
    URLEncodedPostData urlEncoder = new URLEncodedPostData("UTF-8", false); 
    Enumeration keys = params.keys(); 
    while (keys.hasMoreElements()) { 
     String name = (String) keys.nextElement(); 
     String value = (String) params.get(name); 
     urlEncoder.append(name, value); 
    } 

    String encoded = urlEncoder.toString(); 
    return encoded; 
} 

乾杯!