我正在尝试请求JSON资源 . 这段代码工作正常,如果我多次调用它,它会在这一行上抛出一个NullPointer异常

InputStream in = new BufferedInputStream(conn.getInputStream());

再次,这段代码似乎可以正常工作几次 . 但如果它被调用超过两次或三次,它会抛出错误 .

任何的想法?

In this method

public JSONObject makeHttpRequest(String data) {

        // request method is POST
        try {
            urlObj = new URL(someURLHere);

            conn = (HttpURLConnection) urlObj.openConnection();
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Accept-Charset", "UTF-8");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Accept", "application/json");
            //conn.setRequestProperty("Content-Length", "" + data.length());
            conn.setFixedLengthStreamingMode(data.getBytes().length);
            conn.setReadTimeout(10000);
            conn.setConnectTimeout(15000);
            conn.connect();

            wr = new DataOutputStream(conn.getOutputStream());
            wr.writeBytes(data);
            wr.flush();
            wr.close();

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


        try {
            //Receive the response from the server
            InputStream in = new BufferedInputStream(conn.getInputStream());
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            result = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }

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

        conn.disconnect();

        if (result != null) {
            Log.d("JSON Parser", "Result string: " + result.toString());
            // try parse the string to a JSON object
            try {
                jObj = new JSONObject(result.toString());
            } catch (JSONException e) {
                Log.e("JSON Parser", "Error parsing data " + e.toString());
            }
        } else {
            Log.d("JSON Parser", "Result string WAS NULL: ");
        }
        // return JSON Object
        return jObj;
    }

The null pointer exception.

JSONCommunicator.makeHttpRequest(JSONCommunicator.java:123)E / AndroidRuntime:FATAL EXCEPTION:AsyncTask#4 java.lang.RuntimeException:在android.os.AsyncTask $ 3.done执行doInBackground()时发生错误(AsyncTask.java:299 )java.util.concurrent.FutureTask $ Sync.innerSetException(FutureTask.java:273)at java.util.concurrent.FutureTask.setException(FutureTask.java:124)at java.util.concurrent.FutureTask $ Sync.innerRun( FutureTask.java:307)在java.util.concurrent.ThreadPoolExecutor的android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:230)的java.util.concurrent.FutureTask.run(FutureTask.java:137) . runWorker(ThreadPoolExecutor.java:1076)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:569)at java.lang.Thread.run(Thread.java:856)引起:java.lang.NullPointerException在JSONCommunicator.makeHttpRequest(JSONCommunicator.java:141)

Here is the background method used to call the JSONCommunicator.

public class BGDownloadImageList extends AsyncTask<String, Void, Boolean> {
        boolean hasResults = false;

        @Override
        protected void onPreExecute() {
        }

        @Override
        protected Boolean doInBackground(String... params) {
            String json = JSONCalls.getImagesJSON());
            System.out.println("doInBackground: JSON: " + json);
            JSONCommunicator jsonCommunicator = new JSONCommunicator();

            if(jsonCommunicator != null) {

                JSONObject result = jsonCommunicator.makeHttpRequest(json); //NOTICE THIS IS AN IMAGE REQUEST

                System.out.println("doInBackground: result: " + result);
                JSONObject dictTowx, dictData;

                try {

                    dictTowx = result.getJSONObject("towXResponse");
                    dictData = dictTowx.getJSONObject("Data");
                    if (dictData != null) {

                        System.out.println("IMAGES " + dictData);
                        if (dictData.has("Message")) {
                            if (dictData.getString("Message").equals("no images")) {
                                System.out.println("NO IMAGES");
                            }
                        } else {
                            hasResults = true;
                            addImagesToArray(dictData);
                        }
                    }

                } catch (JSONException e) {
                    System.out.println("doInBackground: JSON ERROR");
                    e.printStackTrace();
                }
            } else {
                System.out.println("doInBackground: jsonCommunicator NULL");
            }


            return hasResults; //passed to OnPostExecute
        }

        @Override

        protected void onPostExecute(Boolean r) {
            ////...

        }

    }