【问题标题】:Blackberry URL encoder黑莓 URL 编码器
【发布时间】:2010-11-15 17:27:13
【问题描述】:

我需要在 Blackberry 中使用 HTTP GET 请求对 URL 进行编码。任何人都可以帮助我找到如何实现这一目标。

【问题讨论】:

    标签: java blackberry jde


    【解决方案1】:

    给你;^)

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

    【讨论】:

      【解决方案2】:

      为什么不使用 RIM 的URLEncodedPostData

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

      【讨论】:

      • 很好的解决方案,但不便携。鉴于他想在不同的手机上运行他的软件,他会再次问同样的问题。最好避免只在一个平台上运行的类。
      • 不能确定...在这种情况下你是对的,因为它不是平台相关的功能。但是还是简单的好,当他们问你的时候实现它。
      • 他实际上并没有说他正在编写跨平台的移动代码,所以在这种情况下我会支持coldice - 对我来说使用原生API似乎更安全(不太可能引入错误)自制方法。
      • 也许我在这里误解了这个问题,但我认为这个答案根本不符合问题的要求。 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。这不会那样做。
      • 我无法从此解决方案中获得正确的 URL 编码字符串:这是我的链接 maps.google.com/maps?saddr=HD5&DT48TA
      【解决方案3】:

      使用 w3 提供的类。这里是下载link

      【讨论】:

        【解决方案4】:

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

        干杯!

        【讨论】:

          猜你喜欢
          • 2011-09-01
          • 2013-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多