Я должен отправить сжатые данные JSON, используя Volley в Android.Но Volley принимает только объект JSON.Что мне нужно сделать, чтобы отправить сжатый GZIP JSON через залп запрос?
JSONObject name = new JSONObject ();try {
name.put("name","hello");
}catch(JSONException e){
e.printStackTrace();
}
JSONObject data = new JSONObject();
try{
rrsrsData.put("data",name);
}catch(JSONException e){
}
try{
byte[] compressData = compress(data);
}catch (Exception e){
e.printStackTrace();
}
публичное статическое сжатие байтов [] (объект JSONObject) создает исключение {
String str = object.toString();
ByteArrayOutputStream obj=new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(obj);
gzip.write(str.getBytes("UTF-8"));
gzip.close();
String outStr = obj.toString("UTF-8");
System.out.println("Output String length : " + outStr.length());
return obj.toByteArray();
}
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST , url, compressData , new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v("Json Sucess",response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v("Json Error",error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap headers= new HashMap();
headers.put("Content-Type","application/json");
headers.put("User-Agent","RRSRS/214.204.1");
headers.put("Content-Encoding", "gzip");
//return super.getHeaders();
return headers;
}
};