2009-07-31 9 views
8

Ich muss eine URL mit HTTP GET Anfrage in Blackberry codieren. Kann mir jemand helfen, herauszufinden, wie ich das erreiche?Blackberry URL-Encoder

Antwort

8

hier gehen Sie; ^)

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 Sie nicht verwenden RIM URLEncodedPostData?

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

Große Lösung, aber nicht tragbar. Wenn er seine Software auf einem anderen Handy laufen lassen will, wird er die gleiche Frage erneut stellen. Am besten ist es, Klassen zu meiden, die nur auf einer Plattform laufen. – Toad

+0

Kann nicht sicher sagen ... In diesem Fall hast du recht, weil es keine plattformabhängige Funktionalität ist. Aber immer noch einfach ist gut, implementieren Sie es, wenn sie Sie fragen. –

+4

Er sagt eigentlich nicht, dass er plattformübergreifenden mobilen Code schreibt, also würde ich in diesem Fall mit coldice zusammensitzen - es scheint mir sicherer (weniger wahrscheinlich, Bugs einzuführen), eine native API über einen Homebrew-Ansatz zu verwenden. –

6

Verwenden Sie die von w3 bereitgestellte Klasse. Hier ist der Download link

+0

thx, w3 ist für diese Dinge unterbewertet. –

3

the reply using "URLEncodedPostData" above ist falsch. Korrigierte Beispiel:

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

Prost!