Reputation: 1305
I'm trying to post json object, then try to receive json object. Through sniffer it show that post and get successful works. But receiving object is always null. I think it's because of my carelessness, so I hope you help me with it.
try {
DefaultHttpClient httpclient = new DefaultHttpClient(ccm, params);
HttpPost httppostreq = new HttpPost(URL);
StringEntity se;
se = new StringEntity(jsonObjSend.toString());
//se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
se.setContentType("application/json;charset=UTF-8");
//se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json;charset=UTF-8"));
httppostreq.setEntity(se);
//Setting headers
HttpResponse response = httpclient.execute(httppostreq);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
Header contentEncoding = response.getFirstHeader("Content-Encoding");
if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) {
instream = new GZIPInputStream(instream);
}
// convert content stream to a String
String resultString= convertStreamToString(instream);
instream.close();
resultString = resultString.substring(1,resultString.length()-1);
// Transform the String into a JSONObject
JSONObject jsonObjRecv = new JSONObject(resultString);
return jsonObjRecv;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
and here is a part of Activity where I keep getting NullPointerException error at line JSONObject jsonObjRecv = JSONPost.SendHttpPost(URL, jsonObjSend);
:
// Send the HttpPostRequest and receive a JSONObject in return
JSONObject jsonObjRecv = JSONPost.SendHttpPost(URL, jsonObjSend);
try {
jsonObjRecv.getJSONObject("id"); //Here I got the error
} catch (JSONException e) {
e.printStackTrace();
}
When I changed type jsonObjRecv to String it started to work, but I need JSON type for it.
Error:
02-01 21:39:01.673: ERROR/AndroidRuntime(20855): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Phone/com.Phone.MainActivity.OtherActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797)
at android.app.ActivityThread.access$2300(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4914)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.Phone.MainActivity.OtherActivity.onCreate(OtherActivity.java:47)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1065)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745)
... 11 more
Thank you for your response.
Upvotes: 2
Views: 2946
Reputation: 14
HttpEntity entity = response.getEntity();'
is this returning your any data? Place a null check there before using response object. also you return null for an exception in sendhttppost
Upvotes: 0
Reputation: 1813
Check this library out. It will easily assist you in getting and parsing correct JSON responses. Specifically, it has a very neat JsonHttpResponseHandler for JSON requests.
Upvotes: 0
Reputation: 93561
YOu're getting an exception in JSONPost.SendHttpPost, which causes it to return null. This means you get a null pointer exception when you try to call getJSONObject on the result. It looks like you're trying to do an HTTP request in onCreate through the SendHttpPost function. This isn't allowed- you can't do network IO on the UI thread, it throws an exception. You need to do it in a thread or AsyncTask.
Upvotes: 2