HackerSpace
HackerSpace

Reputation: 11

java.lang.NullPointerException at HttpGet httpGet = new HttpGet(url);

public class ServiceHandler {

static String response = null;
public final static int GET = 1;
public final static int POST = 2;

public ServiceHandler() {

}

/*
 * Making service call
 * @url - url to make request
 * @method - http request method
 * */
public String makeServiceCall(String url, int method) {
    return this.makeServiceCall(url, method, null);
}

/*
 * Making service call
 * @url - url to make request
 * @method - http request method
 * @params - http request params
 * */
public String makeServiceCall(String url, int method,
                              List<NameValuePair> params) {
    try {
        // http client
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpEntity httpEntity = null;
        HttpResponse httpResponse = null;

        // Checking http request method type
        if (method == POST) {
            HttpPost httpPost = new HttpPost(url);
            httpResponse = httpClient.execute(httpPost);

        } else if (method == GET) {

            HttpGet httpGet = new HttpGet(url);
            httpResponse = httpClient.execute(httpGet);

        }
        httpEntity = httpResponse.getEntity();
        response = EntityUtils.toString(httpEntity);

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

    return response;

}

}

This is the class i use for getting String from REST request

    12-26 10:51:35.610    1750-1778/hackerspace.invento.ebooks E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2
Process: hackerspace.invento.ebooks, PID: 1750
java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:300)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)
 Caused by: java.lang.NullPointerException
        at java.net.URI.parseURI(URI.java:353)
        at java.net.URI.<init>(URI.java:204)
        at java.net.URI.create(URI.java:725)
        at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
        at hackerspace.invento.ebooks.ServiceHandler.makeServiceCall(ServiceHandler.java:63)
        at hackerspace.invento.ebooks.ServiceHandler.makeServiceCall(ServiceHandler.java:39)
        at hackerspace.invento.ebooks.Books$GetResult.doInBackground(Books.java:113)
        at hackerspace.invento.ebooks.Books$GetResult.doInBackground(Books.java:94)
        at android.os.AsyncTask$2.call(AsyncTask.java:288)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)

            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)             at java.lang.Thread.run(Thread.java:841)

and this is the Log Error i get How do i solve this?

Upvotes: 1

Views: 2386

Answers (2)

Willis
Willis

Reputation: 5336

My guess would be that you are either passing a NULL string into your method, or for some reason the string is getting set to NULL if the HttpGet() method fails to resolve the URL or something else goes wrong. Try appending this at the end of your try / catch statement:

catch (Exception e)
{
    Log.e("MyApp", "exception: " + e.getMessage());
    Log.e("MyApp", "exception: " + e.toString());
}

Normally, a statement such as this is poor practice to use in your software, as it will essentially squash any exception you get without allowing you to handle the various exception cases. However, for debugging purposes, adding this statement at the end of you try/catch statement will allow you to see if there is perhaps an exception that you are missing that is causing the HttpGet() method to fail which, in turn, causes your NULL error. If you do detect another exception, you can handle it appropriately so that your method no longer returns a NULL string.

Upvotes: 2

VenomVendor
VenomVendor

Reputation: 15382

Your url is NULL

URISyntaxException 

Throws: java.lang.NullPointerException If either the input or reason strings are null

Upvotes: 1

Related Questions