我试图在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 有时包含空格,这可能导致我的程序无法运行。那么如何解决这个问题。?
答案 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%")