Reputation: 15078
I am fetching URL from below URL but i got following error
url = "http://qrpromenad.azurewebsites.net/api/question?id=1&imei=35404304";
public JSONObject getJSONFromUrl(String url) {
System.out.println(url);
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent(); // here i got null value
} catch (Exception e) {
e.printStackTrace();
}
The following is logcat error
04-17 16:00:12.739: W/System.err(4579): java.lang.NullPointerException
04-17 16:00:12.739: W/System.err(4579): at com.qrcodetest.JSONParser.getJSONFromUrl(JSONParser.java:40)
04-17 16:00:12.739: W/System.err(4579): at com.qrcodetest.Result$FetchURL.doInBackground(Result.java:50)
04-17 16:00:12.739: W/System.err(4579): at com.qrcodetest.Result$FetchURL.doInBackground(Result.java:1)
04-17 16:00:12.739: W/System.err(4579): at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-17 16:00:12.739: W/System.err(4579): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-17 16:00:12.739: W/System.err(4579): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-17 16:00:12.739: W/System.err(4579): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-17 16:00:12.739: W/System.err(4579): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-17 16:00:12.739: W/System.err(4579): at java.lang.Thread.run(Thread.java:1019)
but if i use another url like http://api.androidhive.info/contacts/ it is working fine
i have used POST method but still NULL is returning
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(Const.POST_URL);
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "1"));
nameValuePairs.add(new BasicNameValuePair("imei", "123456"));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
System.out.println("httpEntity "+httpEntity); // here is null
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {// false
is = httpEntity.getContent();
}
Upvotes: 0
Views: 207
Reputation: 80603
The URL in question does not support posts (you can test that yourself with any kind of REST client). But, as you yourself have indicated, it does work with GET's. So switch up your code to something like as shown below and problem solved:
final String url = "http://qrpromenad.azurewebsites.net/api/question?id=1&imei=35404304";
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(get);
String responseData = null;
final int status = httpResponse.getStatusLine().getStatusCode();
if (status == HttpStatus.SC_OK) {
responseData = EntityUtils.toString(httpResponse.getEntity());
} else {
System.err.println("HTTP request failed with status " + status);
}
System.out.println(responseData);
You need to add back in (of course) some more advanced error handling
Upvotes: 1