2

当我尝试在 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

4 回答 4

3

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

例子:

strUrlLoginFullpath = strUrlMain + "exl?u=" + URLEncoder.encode(strUser, "UTF-8") +
    "&p=" + URLEncoder.encode(strPass, "UTF-8") + "&t=1";
于 2013-04-09T07:42:25.550 回答
1

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

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

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

于 2013-04-09T07:43:22.017 回答
0

尝试使用URLEncoder.encode()

strUrlLoginFullpath = strUrlMain+"exl?u="+ URLEncoder.encode(strUser)+"&p="+URLEncoder.encode(strPass)+"&t=1";
于 2013-04-09T08:42:21.457 回答
0

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

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

于 2020-07-18T17:00:16.217 回答