我已经修改了登录并实现了这个。
public void login() {
HttpConnection c = null;
InputStream is = null;
StringBuffer str = new StringBuffer();
String url = "http://101.00.00.000/...../"
+ "?user=" + getUsername().getString().trim()
+ "&password=" + getPass().getString().trim();
try {
c = (HttpConnection) Connector.open(url);
is = c.openInputStream();
int len = (int)c.getLength();
int ch;
String getS = "";
while((ch = is.read()) != -1){
str.append((char)ch);
getS = str.toString();
String msg = "Login successful";
System.out.println(getS.substring(0, getS.length()));
if (getS.substring(0, 16).equals(msg)){
System.out.println(getS);
switchDisplayable(null, svgMenu.getSvgCanvas());
}else{
switchDisplayable(null, getAlert2());
// }
}
System.out.println(getS);
}
catch (IOException exception) {
try {
if (is != null)
is.close();
if (c != null)
c.close();
exception.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
调试时url的响应给出了登录成功的正确答案,即在命令行中。但是我注意到字符串比较没有返回正确的逻辑即
if (getS.substring(0, 16).equals(msg)){
System.out.println(getS);
switchDisplayable(null, svgMenu.getSvgCanvas());
}
if语句永远不会执行。
您在服务器端犯了一个错误。因为您从客户端(移动端)发送用户名和密码的字符串值。您需要在服务器端进行验证。在此之前,您需要检查客户端(移动端)用户名和密码上是否有空白。使用getUsername().getString().trim()
和getPass().getString().trim()
,如果需要检查大小写敏感。