2012-12-06 56 views
1

我得到以下錯誤。 java.lang.NullPointerException:lock == null從服務器獲取json文件。我使用了google搜索,但無法找到任何解決方案。java.lang.NullPointerException:從服務器獲取json文件時,鎖== null null

我的代碼:

try { 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 

      Log.i("clock", httpPost.getURI().toString()); 
      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent();   

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      Log.i("Buffer", "1"); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
      Log.i("Buffer", "2"); 
      StringBuilder sb = new StringBuilder(); 
      Log.i("Buffer", "3"); 
      String line = null; 
      Log.i("Buffer", "4"); 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      Log.i("Buffer", "5"); 
      json = sb.toString(); 
      Log.i("Buffer", "6->"+json); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result-> " + e.toString()); 
     } 

logcat的:

enter image description here

+0

如果您記錄了整個堆棧跟蹤異常的消息,而不是隻,你就知道問題是什麼線。 – assylias

+0

請發佈完整的logcat文章,請確保您已在AndroidManifest.xml文件中添加了Internet權限 – rajpara

回答

2

您應經常檢查instance/ java objectnot null隨時隨地使用它之前。

例如。

if(httpResponse != null){ 
    //todo your work here with "httpResponse " 
} 

if(is !=null){ 
    //todo your work here with "is" 
} 

下面是代碼示例,如果我將與服務器進行通信

// this method takes URL as input and returns JSON data 
//parent class name is "NewWebHelper.java" 

public String getResult(String url) { 

     Log.v(TAG, "Final Requsting URL is : :"+url); 

     String line = ""; 
     String responseJsonData = null; 

     try { 
      StringBuilder sb = new StringBuilder(); 
      String x = ""; 
      URL httpurl = new URL(url); 
      URLConnection tc= httpurl.openConnection(); 

      BufferedReader in = new BufferedReader(
           new InputStreamReader(tc.getInputStream())); 

      if(in !=null){ 
       while ((line = in.readLine()) != null) { 
       sb.append(line + "\n"); 
       x = sb.toString(); 
      } 
      responseJsonData = new String(x); 

      } 
     } 
     catch (UnknownHostException uh){    
      Log.v("NewWebHelper", "Unknown host :"); 
      uh.printStackTrace(); 
     } 
     catch (FileNotFoundException e) { 
      Log.v("NewWebHelper", "FileNotFoundException :"); 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      Log.v("NewWebHelper", "IOException :"); 
      e.printStackTrace(); 
     } 
     catch (Exception e) { 
      Log.v("NewWebHelper", "Exception :"); 
      e.printStackTrace(); 
     } 
     return responseJsonData; 
    } 

讓我知道如果您有任何麻煩改編職系這個。

2

例如:

 JSONObject jRoot = new JSONObject(json); 
     if (!jRoot.isNull("response")) { 

      JSONObject jChat = jRoot.getJSONObject("response"); 

      if (!jChat.isNull("type")) { 
       ch.setType(jChat.getString("type")); 
      } 

使用功能isNull或使用條件if (is != null)

0

你只需要給出清單中的互聯網接入許可。

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

工作對我來說...

相關問題