2016-04-25 4 views
1

Ich verwende IntentServices, um Daten auf dem Server zu posten, aber ich weiß nicht, wie man die Antwort im JSON-Format in IntentService bekommt und wie wir feststellen können, dass dieser IntentService im Hintergrund ist oder nicht und einige Operationen basierend auf der Antwort ausführen.Wie bekomme ich JSON Antwort vom Server im Intent Service in Android?

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); 
} 

}

+0

Sie können einige SharedPreference Variable nehmen, dass für und können prüfen, ob Dienst läuft oder nicht. Andernfalls gibt es mehrere Methoden, um zu überprüfen, ob der Dienst ausgeführt wird oder nicht –

+0

was ist mit anderen Abfrage – niraj

+0

Andere Abfrage bedeuten? –

Antwort

0

Verwenden Sie den folgenden Code,

if (statusCode == 200) { 

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

    JSONObject jsonObj = new JSONObject(jsonString); 

    // Do operation on jsonObj 
} 
+0

Ich habe nicht gesagt bekommen Ergebnis von Service, wie man Ergebnis in Service – niraj

+0

Bitte erklären Sie im Detail –

+0

Ich sage, dass anstelle von Asynktask ich Intentservice verwenden, die Daten an den Server im JSON-Format wie oben erwähnt senden. Problem ist das Ich wusste nicht, wie ich in JSON im Intentservice reagieren sollte. – niraj

Verwandte Themen