我已经创建了一个Android应用程序,我需要使用登录。为此,我必须解析xml以进行登录。我在登录按钮下写下面的代码。
loginButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
getInput();
parserMethod=new ParserMethod();
login=parserMethod.parseLoginStatus(userName,password,mobileNo,code);
if(login.getLoginStatus().equals("Sucess.."))
{
i=new Intent();
i.setClass(LoginActivity.this, MainActivity.class);
startActivity(i);
}
}
});
public Login parseLoginStatus(String userName, String password,String mobileNo, String code)
{
String sourceString="http://www.example.info/mobapp/Web_service/checkLogin.php?userId=robin&password=123456&mobile=0&code=8080&output=xml";
loadParseData(sourceString);
return MyXMLHandler.login;
}
private void loadParseData(String sourceString)
{
try
{
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
URL sourceUrl=new URL(sourceString);
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
}
catch(Exception e)
{
System.out.println("XML Pasing Excpetion = " + e);
}
}
但问题是当网络不可用或xml不可用时,应用程序崩溃了。我该如何解决这个问题。提前谢谢。
答案 0 :(得分:0)
首先,您不应该在主UI线程中处理登录(在按钮OnCLickListener
内)。请按照this article检查如何使用AsyncTask
。
答案 1 :(得分:0)
这应该可以解决你的问题...
public Login parseLoginStatus(String userName, String password,String mobileNo, String code)
{
String sourceString="http://www.amarhost.info/mobapp/Web_service/checkLogin.php?userId=databiz&password=123456&mobile=0&code=8080&output=xml";
if(sourceString.equals("message it gives when there is no net connection")){
return null;
}
//String sourceString="http://www.amarhost.info/mobapp/Web_service/checkLogin.php?userId="+userName+"&password="+password+"&mobile="+mobileNo+"&code="+code+"&output=xml";
loadParseData(sourceString);
return MyXMLHandler.login;
}