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.
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");
}
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