2014-01-24 2 views
1

네트워크에 연결되어 있지 않을 때 프로젝트를 실행하려고했습니다. 네트워크를 사용할 수 있으면 문제가 발생하지 않습니다. 나는이 오류가 발생했습니다 안드로이드에서 Json tokener 오류

,

01-24 17:41:19.725: E/AndroidRuntime(1077): FATAL EXCEPTION: AsyncTask #3 
01-24 17:41:19.725: E/AndroidRuntime(1077): java.lang.RuntimeException: An error occured while executing doInBackground() 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at java.lang.Thread.run(Thread.java:856) 
01-24 17:41:19.725: E/AndroidRuntime(1077): Caused by: java.lang.NullPointerException 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at org.json.JSONTokener.nextValue(JSONTokener.java:94) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at org.json.JSONObject.<init>(JSONObject.java:154) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at org.json.JSONObject.<init>(JSONObject.java:171) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at com.example.sms.JsonParser.makeHttpRequest(JsonParser.java:136) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at co m.example.sms.LoginActivity$AttemptLogin.doInBackground(LoginActivity.java:298) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at com.example.sms.LoginActivity$AttemptLogin.doInBackground(LoginActivity.java:1) 
01-24 17:41:19.725: E/AndroidRuntime(1077):  at 

이 내 JsonParser 클래스, 나는 심지어 내가 널 점검이 오류가 발생했습니다 이유를 잘 모릅니다

public JSONObject makeHttpRequest(String url, String method, 
     List<NameValuePair> params) { 


    try { 

     json=null; 
     jsonObject= null; 
     if(method.equalsIgnoreCase("POST")){ 


      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 

      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

      System.out.println(is); 

      System.out.println("getting the content"); 

     }else if(method.equalsIgnoreCase("GET")){ 

      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      String paramString = URLEncodedUtils.format(params, "utf-8"); 
      url += "?" + paramString; 
      HttpGet httpGet = new HttpGet(url); 

      HttpResponse httpResponse = httpClient.execute(httpGet); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

     }   

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


    System.out.println("getting all the values "); 

    try {  
     json = null; 
     jsonObject =null; 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 


     StringBuilder sb = new StringBuilder(); 
     String line = null; 

     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 

     is.close(); 

     json = sb.toString();  


    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 


    try { 

     Log.i("tagconvertstr1", "["+json+"]"); 
     //if(TextUtils.isEmpty(json)) 
     if(json!=null||json!="null") 
     { 
      jss= "not empty"; 
      System.out.println("json is not equal to null"); 
      jsonObject = new JSONObject(json); 
      System.out.println("json object parse finished"); 

     Log.i("tagconvertstr2","["+json+"]"); 

     } 

     else 
     { 
      System.out.println(" it is null value "); 
      jss= "empty"; 
      System.out.println("jss value is" +jss); 

     } 


    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 


    System.out.println("jsson object is" + json); 

    return jsonObject; 

} 

은! 아무도 나를 도와 줄 수 있습니까?

+0

에 코드

jsonObject=new JSONObject(json) ; 

다음 대체 해결하기 위해? – edisonthk

+0

jsonObject = mew JSONObject (json) 이것은 내 136 번째 라인입니다 – Barbie

+0

흠, 뮤는 새로운 것입니다. –

답변

0

webservice를 호출하기 전에 인터넷을 사용할 수 있는지 확인하십시오.

if(isInternetConnected()){ 
      // call your webservice 
       } 
       else{ 
        AlertUtils.showNetworkAlert(RegisterActivity.this); 
       } 

인터넷 연결을 확인하십시오.

public static boolean isInternetConnected(){ 
     ConnectivityManager cm = (ConnectivityManager) SSApplication.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo info = cm.getActiveNetworkInfo(); 

     boolean isConnected = false; 

     if(info != null && info.isConnectedOrConnecting()){ 
      isConnected = true; 
     } 

     return isConnected; 
    } 
+0

나는 ganesh를 끝냈다 ... 나의 서버가 연결되어 있지 않다면 나는 체크 할 필요가 없다. – Barbie

+0

안녕하세요? "jsonObject"가 null인지 아닌지 확인하십시오. jsonobject가 null의 경우, 그 조건을 처리합니다. – RVG

1

네트워킹 연결이 끊어져도이 오류가 발생했다고 말했던 것처럼. 이는 NULL 값을 받고 NULL 값을 json으로 전달한다는 의미입니다. 생성자에 null을 할당하면 JSONObject에서 오류를 catch 할 수 없습니다. 그래서,이 문제는 라인 136

jsonObject=new JSONObject(json == null ? "" : json) ; 
관련 문제