2016-04-25 15 views
1

IntentServicesを使用してサーバーにデータを投稿していますが、IntentServiceでjson形式の応答を取得する方法がわかりません。また、このIntentServiceがバックグラウンドであるかどうか、応答に基づいていくつかの操作を実行する方法を知ることができます。Intent ServiceのサーバーからJsonの応答をアンドロイドで取得する方法は?

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

あなたはそのためのいくつかのSharedPreference変数を取ることができ、サービスが実行されているかどうかを確認することができます。それ以外の場合は、サービスが実行されているかどうかを確認するいくつかの方法があります –

+0

他のクエリについてどうか – niraj

+0

他のクエリの意味ですか? –

答えて

0

コードの下の使用、

if (statusCode == 200) { 

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

    JSONObject jsonObj = new JSONObject(jsonString); 

    // Do operation on jsonObj 
} 
+0

サービスから結果を得る方法を教えてくれませんでした。 – niraj

+0

詳細を説明してください。 –

+0

Asynktaskを使用する代わりに、上記のようにjson形式でサーバーにデータを送信するIntentserviceを使用しています。私はIntentserviceでjsonで応答を得る方法を知らなかった。 – niraj

関連する問題