我正在使用IntentServices将数据发布到服务器,但我不知道如何在IntentService中获得json格式的响应,以及我们如何能够发现这个IntentService在后台运行,并根据响应执行某些操作。如何从android中的Intent服务中的服务器获取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.
*
* // * @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 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);
}
}下面的代码
2016-04-25
niraj
+0
你可以采取一些SharedPreference变量为和可检查服务是否正在运行与否。否则有几种方法检查服务是否正在运行 –
+0
其他查询 –
+0
其他查询是什么意思? –