niraj
niraj

Reputation: 95

How to get Json response from server in Intent Service in android?

I am using IntentServices to Post data to server but I don't know how to get response in json format in IntentService and also how can we find that this IntentService is in background or not and perform some operation based on response.

public class CDealIntentService extends IntentService {
private static final String s_szDealDetailUrl = "http://202.121.144.133:8080/ireward/rest/json/metallica/getDealDetailInJSON";
private static String s_szresult = "";
Context ctx;
String m_szMobileNumber, m_szEncryptedPassword;

/**
 * Creates an IntentService.  Invoked by your subclass's constructor.
 * <p/>
 * //    * @param name Used to name the worker thread, important only for debugging.
 */
public CDealIntentService() {
    super("CDealIntentService");
}

@Override
protected void onHandleIntent(Intent intent) {
    Context ctx = getApplicationContext();
    CLoginSessionManagement m_oSessionManagement = new CLoginSessionManagement(ctx);
    HashMap<String, String> user = m_oSessionManagement.getLoginDetails();
    m_szMobileNumber = user.get(CLoginSessionManagement.s_szKEY_MOBILE);// getting mobile from saved preferences..........
    m_szEncryptedPassword = user.get(CLoginSessionManagement.s_szKEY_PASSWORD);// getting password from shared preferences...

    InputStream inputStream;
    try {
        // 1. create HttpClient
        HttpClient httpclient = new DefaultHttpClient();
        // 2. make POST request to the given URL
        HttpPost httpPost = new HttpPost(s_szDealDetailUrl);
        String json;
        // 3. build jsonObject
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("agentCode", m_szMobileNumber);// mobile Number
        jsonObject.put("pin", m_szEncryptedPassword);// password
        //noinspection AccessStaticViaInstance
        jsonObject.put("dealcode", CDealCode.getInstance().getS_szDealCode());// dealCode
        // 4. convert JSONObject to JSON to String
        json = jsonObject.toString();
        // 5. set json to StringEntity
        StringEntity se = new StringEntity(json);
        // 6. set httpPost Entity
        httpPost.setEntity(se);
        // 7. Set some headers to inform server about the type of the content
        //  httpPost.setHeader("Accept", "application/json");   ///not required
        httpPost.setHeader("Content-type", "application/json");
        // 8. Execute POST request to the given URL
        HttpResponse httpResponse = httpclient.execute(httpPost);
        HttpEntity entity = httpResponse.getEntity();
        // 9. receive response as inputStream
        inputStream = entity.getContent();
        System.out.print("InputStream...." + inputStream.toString());
        System.out.print("Response...." + httpResponse.toString());

        StatusLine statusLine = httpResponse.getStatusLine();
        System.out.print("statusLine......" + statusLine.toString());
        ////Log.d("resp_body", resp_body.toString());
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) {
            // 10. convert inputstream to string
            s_szresult = CJsonsResponse.convertInputStreamToString(inputStream);
        } else
            s_szresult = "Did not work!";

    } catch (Exception e) {
        Log.d("InputStream", e.getLocalizedMessage());
    }

    System.out.println("Result" + s_szresult);
}

}

Upvotes: 3

Views: 1656

Answers (1)

Sagar Zala
Sagar Zala

Reputation: 5134

Use below code,

if (statusCode == 200) {

    String jsonString = EntityUtils.toString(httpResponse.getEntity());

    JSONObject jsonObj = new JSONObject(jsonString);

    // Do operation on jsonObj
}

Upvotes: 1

Related Questions