1

我收到以下错误。java.lang.NullPointerException: lock == null while get json file from server.I google但找不到任何解决方案。

我的代码:

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

日志猫:

在此处输入图像描述

4

3 回答 3

3

您应该在任何时候使用它之前检查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;
    }

让我知道您是否在重新评分时遇到任何问题。

于 2012-12-06T10:45:29.073 回答
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)

于 2012-12-06T11:00:20.790 回答
0

您只需要在 Manifests 中授予 Internet 访问权限。

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

为我工作...

于 2017-11-13T10:51:56.227 回答