如何处理url android中的空格

时间:2013-04-09 07:40:04

标签: java android url login

我试图在url android中运行一些空格时出错  这是代码:

              String strUrlLoginFullpath = "";


              strUrlLoginFullpath = strUrlMain+"exl?u="+strUser+"&p="+strPass+"&t=1";



              URL url = new URL(strUrlLoginFullpath);
              publishProgress(40);

              //membuka koneksi
              URLConnection urlConn = url.openConnection();
              urlConn.setConnectTimeout(50000);
              urlConn.setReadTimeout(50000);

              //digunakan untuk menangkap nilai dari server
              BufferedReader in = new BufferedReader(
                      new InputStreamReader(
                              urlConn.getInputStream()));
              publishProgress(60);
              String inputLine;
              int i=0;
              while ((inputLine = in.readLine()) != null)
              {     
                  Log.v("Login",i+", return:" +inputLine+"; url: "+strUrlLoginFullpath);
                  if(i == 5)
                      {
                        Log.v("Login","RESULT >"+i+", return:" +inputLine+"; url: "+strUrlLoginFullpath);
                        str2 = inputLine;
                      }
                  i++;
              }
              in.close();


              publishProgress(80);

              publishProgress(100);
          } 
          catch (MalformedURLException e) 
          {
                Log.v("KxL", "MalformedURLException=" + e.toString());
          } 
          catch (IOException e) 
          {
                Log.v("KxL", "IOException=" + e.toString());
          } 
          return null;
    }

如你所见..我有strUrlLoginFullpath = strUrlMain+"exl?u="+strUser+"&p="+strPass+"&t=1";中的登录验证命令,但条件是 strUser 有时包含空格,这可能导致我的程序无法运行。那么如何解决这个问题。?

4 个答案:

答案 0 :(得分:3)

URLEncoder.encode()您的网址参数值,以便空格和其他特殊字符得到正确编码。

示例:

strUrlLoginFullpath = strUrlMain + "exl?u=" + URLEncoder.encode(strUser, "UTF-8") +
    "&p=" + URLEncoder.encode(strPass, "UTF-8") + "&t=1";

答案 1 :(得分:1)

网址中不允许使用空格。相反,你应该对它们进行URL编码 - 用%20替换所有空格,并且事情应该在另一端出现。

如果有任何其他特殊字符(在URL中被认为是特殊字符)可能存在于任何字符串中,至少对于密码来说很可能,您应该使用合适的URL编码函数对整个字符串进行URL编码避免任何问题或安全问题。

忽略,即在URL的查询字符串中传递密码的安全问题。

答案 2 :(得分:0)

尝试使用URLEncoder.encode()

strUrlLoginFullpath = strUrlMain+"exl?u="+ URLEncoder.encode(strUser)+"&p="+URLEncoder.encode(strPass)+"&t=1";

答案 3 :(得分:0)

创建url字符串后,只需执行以下操作:

strUrlLoginFullpath = strUrlMain+"exl?u="+strUser+"&p="+strPass+"&t=1"; strUrlLoginFullpath.replace(" ", "20%")