Skip to content

Instantly share code, notes, and snippets.

@iftekhar-ahmed
Created February 19, 2015 18:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iftekhar-ahmed/dc9c9c50e8101f679920 to your computer and use it in GitHub Desktop.
Save iftekhar-ahmed/dc9c9c50e8101f679920 to your computer and use it in GitHub Desktop.
Fix UTF-8 header issue with json response
public class SyncService extends Service {
private DbManager dbManager;
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
HttpHelper httpHelper = HttpHelper.getInstance(this);
DbManager.init(this);
dbManager = DbManager.getInstance();
JsonArrayRequest menuRequest = new JsonArrayRequest(Config.getMenuUrl(),
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
LogUtil.LOGE(response.toString());
ContentMenu.updateDb(dbManager, JsonParser.getParsedContentMenus(response.toString()));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
) {
@Override
protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
try {
final String TYPE_UTF8_CHARSET = "charset=UTF-8";
String type = response.headers.get(HTTP.CONTENT_TYPE);
if (type == null) {
LogUtil.LOGE("content type was null");
type = TYPE_UTF8_CHARSET;
response.headers.put(HTTP.CONTENT_TYPE, type);
} else if (!type.contains("UTF-8")) {
LogUtil.LOGE("content type had UTF-8 missing");
type += ";" + TYPE_UTF8_CHARSET;
response.headers.put(HTTP.CONTENT_TYPE, type);
}
} catch (Exception e) {
//print stacktrace e.g.
}
return super.parseNetworkResponse(response);
}
};
httpHelper.addToRequestQueue(menuRequest);
JsonArrayRequest topicRequest = new JsonArrayRequest(Config.getTopicUrl(),
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
LogUtil.LOGE("topic url" + response.toString());
DbContent.updateDb(dbManager, JsonParser.getParsedDbContents(response));
Intent localIntent = new Intent(Constants.ACTION_RESPONSE);
LocalBroadcastManager.getInstance(SyncService.this).sendBroadcast(
localIntent);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
) {
@Override
protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
try {
final String TYPE_UTF8_CHARSET = "charset=UTF-8";
String type = response.headers.get(HTTP.CONTENT_TYPE);
if (type == null) {
LogUtil.LOGE("content type was null");
type = TYPE_UTF8_CHARSET;
response.headers.put(HTTP.CONTENT_TYPE, type);
} else if (!type.contains("UTF-8")) {
LogUtil.LOGE("content type had UTF-8 missing");
type += ";" + TYPE_UTF8_CHARSET;
response.headers.put(HTTP.CONTENT_TYPE, type);
}
} catch (Exception e) {
//print stacktrace e.g.
}
return super.parseNetworkResponse(response);
}
};
httpHelper.addToRequestQueue(topicRequest);
LogUtil.LOGE("inside test service");
return START_STICKY;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment