Reputation: 95
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
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