【发布时间】:2010-11-15 17:27:13
【问题描述】:
我需要在 Blackberry 中使用 HTTP GET 请求对 URL 进行编码。任何人都可以帮助我找到如何实现这一目标。
【问题讨论】:
标签: java blackberry jde
我需要在 Blackberry 中使用 HTTP GET 请求对 URL 进行编码。任何人都可以帮助我找到如何实现这一目标。
【问题讨论】:
标签: java blackberry jde
给你;^)
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;
}
【讨论】:
为什么不使用 RIM 的URLEncodedPostData?
private String encodeUrl(String hsURL) {
URLEncodedPostData urlEncoder = new URLEncodedPostData("UTF-8", false);
urlEncoder.setData(hsURL);
hsURL = urlEncoder.toString();
return hsURL;
}
【讨论】:
URLEncodedPostData 用于 POST 参数(键/值对)的 URL 编码集,在 POST 请求中写入内容字节。在我看来(以及这里的其他几个答案),OP 要求对 URL 本身进行编码。例如,http://maps.google.com/?addr=123 Main St, New York, NY -> http://maps.google.com/?addr=123+Main+St,+New+York,+NY。这不会那样做。
使用 w3 提供的类。这里是下载link
【讨论】:
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;
}
干杯!
【讨论】: