android中的Json令牌错误

android中的Json令牌错误,android,json,nullpointerexception,Android,Json,Nullpointerexception,我试图在没有网络连接的情况下运行我的项目。如果网络可用,则不会出现问题 我犯了这个错误 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:4

我试图在没有网络连接的情况下运行我的项目。如果网络可用,则不会出现问题

我犯了这个错误

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 
01-2417:41:19.725:E/AndroidRuntime(1077):致命异常:AsyncTask#3
01-24 17:41:19.725:E/AndroidRuntime(1077):java.lang.RuntimeException:执行doInBackground()时出错
01-24 17:41:19.725:E/AndroidRuntime(1077):在android.os.AsyncTask$3.done(AsyncTask.java:299)
01-24 17:41:19.725:E/AndroidRuntime(1077):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
01-24 17:41:19.725:E/AndroidRuntime(1077):在java.util.concurrent.FutureTask.setException(FutureTask.java:219)
01-24 17:41:19.725:E/AndroidRuntime(1077):在java.util.concurrent.FutureTask.run(FutureTask.java:239)
01-24 17:41:19.725:E/AndroidRuntime(1077):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-24 17:41:19.725:E/AndroidRuntime(1077):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-24 17:41:19.725:E/AndroidRuntime(1077):在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-24 17:41:19.725:E/AndroidRuntime(1077):在java.lang.Thread.run(Thread.java:856)
01-24 17:41:19.725:E/AndroidRuntime(1077):由以下原因引起:java.lang.NullPointerException
01-24 17:41:19.725:E/AndroidRuntime(1077):在org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
01-2417:41:19.725:E/AndroidRuntime(1077):位于org.json.JSONTokener.nextValue(JSONTokener.java:94)
01-2417:41:19.725:E/AndroidRuntime(1077):位于org.json.JSONObject.(JSONObject.java:154)
01-2417:41:19.725:E/AndroidRuntime(1077):位于org.json.JSONObject.(JSONObject.java:171)
01-24 17:41:19.725:E/AndroidRuntime(1077):位于com.example.sms.JsonParser.makeHttpRequest(JsonParser.java:136)
01-24 17:41:19.725:E/AndroidRuntime(1077):在co m.example.sms.LoginActivity$AttemptLogin.doInBackground(LoginActivity.java:298)
01-24 17:41:19.725:E/AndroidRuntime(1077):在com.example.sms.LoginActivity$AttemptLogin.doInBackground(LoginActivity.java:1)
01-2417:41:19.725:E/AndroidRuntime(1077):在
这是我的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;

}
公共JSONObject makeHttpRequest(字符串url、字符串方法、, 列表参数){ 试一试{ json=null; jsonObject=null; if(方法equalsIgnoreCase(“POST”)){ DefaultHttpClient httpClient=新的DefaultHttpClient(); HttpPost HttpPost=新的HttpPost(url); setEntity(新的UrlEncodedFormEntity(参数)); HttpResponse HttpResponse=httpClient.execute(httpPost); HttpEntity HttpEntity=httpResponse.getEntity(); is=httpEntity.getContent(); 系统输出打印项次(is); System.out.println(“获取内容”); }else if(method.equalsIgnoreCase(“GET”)){ DefaultHttpClient httpClient=新的DefaultHttpClient(); String paramString=URLEncodedUtils.format(params,“utf-8”); url+=“?”+参数字符串; HttpGet HttpGet=新的HttpGet(url); HttpResponse HttpResponse=httpClient.execute(httpGet); HttpEntity HttpEntity=httpResponse.getEntity(); is=httpEntity.getContent(); } }捕获(不支持的编码异常e){ e、 printStackTrace(); }捕获(客户端协议例外e){ e、 printStackTrace(); }捕获(IOE异常){ e、 printStackTrace(); } System.out.println(“获取所有值”); 试试{ json=null; jsonObject=null; BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,“iso-8859-1”),8; StringBuilder sb=新的StringBuilder(); 字符串行=null; 而((line=reader.readLine())!=null){ sb.追加(第+行“\n”); } is.close(); json=sb.toString(); }捕获(例外e){ Log.e(“缓冲区错误”,“错误转换结果”+e.toString()); } 试一试{ Log.i(“tagconvertstr1”,“[“+json+]”); //if(TextUtils.isEmpty(json)) if(json!=null | | json!=“null”) { jss=“非空”; System.out.println(“json不等于null”); jsonObject=新的jsonObject(json); System.out.println(“json对象解析完成”); Log.i(“tagconvertstr2”,“[”+json+“]”); } 其他的 { System.out.println(“它是空值”); jss=“空”; System.out.println(“jss值为”+jss); } }捕获(JSONException e){ Log.e(“JSON解析器”,“错误解析数据”+e.toString()); } System.out.println(“jsson对象是”+json); 返回jsonObject; }
我不知道为什么我得到这个错误,即使我检查为空!有人能帮我吗?

在打电话给webservice之前,请检查internet是否可用

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

正如您所说,此错误是在断开网络连接时发生的。这意味着您收到空值并将空值传递给json。如果将null分配给构造函数,则JSONObject无法捕获错误。因此,要解决此问题,请替换以下代码

jsonObject=new JSONObject(json) ;


jsonObject=mewJSONObject(json)这是我的第136行,它说错误发生在类的第136行。在执行resthttpResp.getStatusLine().getStatusCode()之前,应该检查httpresponse返回代码;将给你状态码(200404等…)我做了ganesh…当我的服务器没有连接时,我需要检查nahi请检查你返回的“jsonObject”是否为空。如果jsonobject为null,则处理该条件。
jsonObject=new JSONObject(json == null ? "" : json) ;