2012-09-07 19 views
0

雖然檢索值我無法檢索值。爲什麼我在下面給出的代碼中獲得IOexcetion?處理程序有問題,但我無法弄清楚。爲什麼我在SAX解析時收到IOException

public SitesList opCodeRequest(String code) 
    { 
     SitesList objsitelist =null; 
     try { 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet method= new HttpGet(); 
      method.setURI(new URI(AppConstatnt.OPCODE_URL+code)); 

      HttpResponse response=client.execute(method);   
      HttpEntity entity=response.getEntity();   
      InputStream stream=entity.getContent(); 

      Log.e("b4 execute in login","aditya"); 

      SAXParserFactory spf = SAXParserFactory.newInstance(); 
      SAXParser sp = spf.newSAXParser(); 
      XMLReader xr = sp.getXMLReader(); 
      OPCodeHandler myopcodeHandler = new OPCodeHandler(); 
      xr.setContentHandler(myopcodeHandler); 

      xr.parse(new InputSource(stream)); 
      objsitelist = myopcodeHandler.getSiteList(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (URISyntaxException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace();//error 
     } catch (ParserConfigurationException e) { 
      e.printStackTrace(); 
     } catch (SAXException e) { 
      e.printStackTrace(); 
     } 
     return objsitelist; 


    } 

處理程序

public class OPCodeHandler extends DefaultHandler { 

    boolean currentElement = false; 
    String currentValue = ""; 
    SitesList siteobject; 

    public SitesList getSiteList() { 
     return siteobject; 
    } 

    public void setSiteList(SitesList objsite) { 
     siteobject = objsite; 
    } 

    @Override 
    public void startElement(String uri, String localName, String qName, 
      Attributes attributes) throws SAXException { 
     currentElement = true; 
     currentValue = ""; 
     if (localName.equalsIgnoreCase("opcode")) { 
      siteobject = new SitesList(); 
     } 
    } 

    @Override 
    public void characters(char[] ch, int start, int length) 
      throws SAXException { 

     if (currentElement) { 
      currentValue = new String(ch, start, length); 
      currentElement = false; 
     } 
    } 

    @Override 
    public void endElement(String uri, String localName, String qName) 
      throws SAXException { 
     currentElement = false; 
     if (localName.equalsIgnoreCase("tsip")) { 
      siteobject.setTsip(currentValue); 
     } 
     if (localName.equalsIgnoreCase("ssip")) { 
      siteobject.setSsip(currentValue); 
     } 
     if (localName.equalsIgnoreCase("brand")) { 
      siteobject.setBrand(currentValue); 
     } 
     if (localName.equalsIgnoreCase("balance")) { 
      siteobject.setBalance(currentValue); 
     } 
     if (localName.equalsIgnoreCase("rates")) { 
      siteobject.setRates(currentValue); 
     } 

     if (localName.equalsIgnoreCase("domain")) { 
      siteobject.setDomain(currentValue); 
     } 
     if (localName.equalsIgnoreCase("operator")) { 
      siteobject.setOperator(currentValue); 
     } 
     if (localName.equalsIgnoreCase("active")) { 
      siteobject.setActive(currentValue); 
     } 
     if (localName.equalsIgnoreCase("opcode")) { 
      setSiteList(siteobject); 
     } 

    } 

} 

活動我在哪裏檢索值。

@Override 
     protected void onPostExecute(SitesList result) 
     { 
      if(this.objprogress.isShowing()) 
      { 
       this.objprogress.dismiss(); 
      } 

      tsip = result.getTsip(); 
      ssip = result.getSsip(); 
      brand = result.getBrand(); 
      balance = result.getBalance(); 
      rates = result.getRates(); 
      domain = result.getDomain(); 
      operator = result.getOperator(); 
      active = result.getActive(); 
     } 

的logcat:

FATAL EXCEPTION: main 
java.lang.NullPointerException 
at com.sample.test.SampleAppActivity$Communicator.onPostExecute(SampleAppActivity.java:161) 
at com.sample.test.SampleAppActivity$Communicator.onPostExecute(SampleAppActivity.java:1) 

at android.os.AsyncTask.finish(AsyncTask.java:417) 
at android.os.AsyncTask.access$300(AsyncTask.java:127) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 

at android.os.Handler.dispatchMessage(Handler.java:99) 

at android.os.Looper.loop(Looper.java:130) 

at android.app.ActivityThread.main(ActivityThread.java:3687) 

at java.lang.reflect.Method.invokeNative(Native Method) 

at java.lang.reflect.Method.invoke(Method.java:507) 

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 

at dalvik.system.NativeStart.main(Native Method) 
+0

你還可以發佈你的logCat條目嗎? –

+0

我發佈了logcat條目。 – bkshukla

回答

0

你得到一個空指針異常。這意味着一個變量或東西不應該是null。我首先想到的是,你應該試着讓所有的變量都正確。

例如:

SitesList objsitelist =null; 

應inizialised像:

SitesList objsitelist =new SitesList(); 

回覆,如果你這樣做了,它仍然無法工作。

+0

是啊,仍然是例外。 – bkshukla

+0

你能說出「SampleAppActivity」的第161行上的哪個代碼或發佈整個活動 –