Search code examples
androidrestresponseloopj

Response string is blank in loopj for Android


Here is the code that I have used for Async Http requests using loopj.

AsyncHttpClient loopjClient = new AsyncHttpClient();

    PersistentCookieStore loopjCookieStore = new PersistentCookieStore(this);
    loopjClient.setCookieStore(loopjCookieStore);

    RequestParams loopjParams = new RequestParams();
    loopjParams.put("username", username);
    loopjParams.put("email", emailID);
    loopjParams.put("password", password);
    Log.d(TAG, "RRRRRRlll");

    loopjClient.post("http://www.example.com/", loopjParams, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(int k,String response) {
            super.onSuccess(k, response);
            Log.d(TAG, "RRRRRR "+ response );
        }


    });

And my server response string is just the following with out the HTML tags

{"AUTHENTICATION":{"SUCCESS":false,"USERNAME":"unregistered","USERID":0},"ALERTBOX":{"SHOW":true,"MESSAGE":"Message : Username or email ID already registered. Please choose a different one."}}

But loopj doesnt print the above string in onSuccess().

Can you tell how to get the string or do I have to fall back to default Android http library ?

Thanks in advance.

EDIT

Instead of 'example'(my site) if I replace it with 'facebook' I just get the following string as response with a 200 response code <?xml version="1.0" encoding="utf-8"?>


Solution

  • Since the result of AUTHENTICATION failed, I'm wondering if the status code that your server return is not 200. You can override onFailure method to deal with this situation.

    @Override
    public void onFailure(Throwable e) {
        Log.d(TAG, e.toString());
    }
    


    Edit
    Another guess, have you added the following line in your Manifest.xml?

    <uses-permission android:name="android.permission.INTERNET" />
    


    Edit Again
    I saw your edit, and it seems that you have an buggy LogCat as @shailendra-rajawat mentioned in comment, since LogCat printed only the first line. Try Toast instead:

    @Override
    public void onSuccess(int k, String response) {
        Toast.makeText(getBaseContext(), response, 1).show();
    }
    

    I found this post for configuring your LogCat, and maybe you can give it a try. (Mine is 5000 FYI)