2009-07-31 19 views

Odpowiedz

8

tutaj idziesz; ^)

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 nie używacie RIM URLEncodedPostData?

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

Świetne rozwiązanie, ale nie przenośne. Biorąc pod uwagę, że chce uruchomić swoje oprogramowanie na innej komórce, ponownie zadał to samo pytanie. Najlepiej unikać zajęć, które działają tylko na jednej platformie. – Toad

+0

Nie mogę powiedzieć na pewno ... W tym przypadku masz rację, ponieważ nie jest to funkcja zależna od platformy. Ale nadal proste jest dobre, zaimplementuj je, kiedy cię o to poprosi. –

+4

On tak naprawdę nie mówi, że pisze wieloplatformowy kod mobilny, więc w tym przypadku byłbym po stronie zimna - wydaje mi się bezpieczniejsze (mniej prawdopodobne, że wprowadzę błędy) do korzystania z natywnego API w porównaniu z podejściem homebrew. –

6

użyj klasy dostarczonej przez w3. Oto pobieranie

+0

thx, w3 jest niedoceniany za te rzeczy. –

3

the reply using "URLEncodedPostData" above jest niepoprawne. Skorygowana próbka:

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; 
} 

Pozdrawiam!