在android中抛出异常问题

时间:2011-08-04 03:31:34

标签: android exception saxparseexception

我已经创建了一个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不可用时,应用程序崩溃了。我该如何解决这个问题。提前谢谢。

2 个答案:

答案 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;
    }