0

I'm using following code to get response from the API.

BufferedReader bf = new BufferedReader(new InputStreamReader(
                connection.getInputStream()));
        System.out.println("bf.readLine() - " + bf.readLine());

        output = bf.readLine();
        while (output != null) {
            JSONObject obj = new JSONObject(output);
            System.out.println("output is " + output);
            resCode = obj.getString("resCode");
            resDesc = obj.getString("COUNT");
        }

I can return bf.readLine() response as follows.

{"status":true,"data":[{"COUNT":"0"}]}

Problem is when I assign the bf.readLine() to String and check the value, it becomes null. Why bf.readLine() shows as null (gives null point exception) even it return the value from API.

SpringLearner
  • 13,738
  • 20
  • 78
  • 116
dmaprasad
  • 301
  • 2
  • 7
  • 17

2 Answers2

4

The reason is you are calling readLine twice. You calling first at System.out.println("bf.readLine() - " + bf.readLine()); and again at output = bf.readLine();

Modify as output = bf.readLine();System.out.println("bf.readLine() - " + output);

As per oracle docsreadLine()

Returns: A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached

if the end of the stream is reached then you will get null and operations on null will give nullpointerexception

Community
  • 1
  • 1
SpringLearner
  • 13,738
  • 20
  • 78
  • 116
1

Your code should be

BufferedReader bf = new BufferedReader(new InputStreamReader(
                connection.getInputStream()));

String output = null;

        while ((output = bf.readLine()) != null) {
         System.out.println("bf.readLine() value is--- - " + output );

            JSONObject obj = new JSONObject(output);
            System.out.println("output is " + output);
            resCode = obj.getString("resCode");
            resDesc = obj.getString("COUNT");
        }
LONGHORN007
  • 526
  • 9
  • 24
  • Thanks for the code and helpful for solve the problem. But There should have brackets for output = bf.readLine() . Could you please edit that one. Then someone can directly use it. ((output = bf.readLine()) != null) instead of (output = bf.readLine() != null) – dmaprasad Jun 16 '16 at 06:06
  • Code is updated at your suggestion. Please read @SpringLearner answer to understand the flow and how i works – LONGHORN007 Jun 23 '16 at 03:57