بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

فشرده سازی json

مدیریت گفتگو
javad-PSH 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام دوستان کسی میدونه چطور اطلاعاتی رو که از طریق json دریافت می کنیم فشرده کنیم تا حجم اطلاعات کمتر بشه


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser {

	static InputStream is = null;
	static JSONObject jObj = null;
	static String json = "";

	// constructor
	public JSONParser() {

	}

	// function get json from url
		// by making HTTP POST or GET mehtod
		public JSONObject makeHttpRequest(String url, String method,
				List<NameValuePair> params) {

			// Making HTTP request
			try {
				
				// check for request method
				if(method == "POST"){
					// request method is POST
					// defaultHttpClient
					DefaultHttpClient httpClient = new DefaultHttpClient();
					HttpPost httpPost = new HttpPost(url);
					httpPost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));

					HttpResponse httpResponse = httpClient.execute(httpPost);
					HttpEntity httpEntity = httpResponse.getEntity();
					is = httpEntity.getContent();
					
				}else if(method == "GET"){
					// request method is GET
					DefaultHttpClient httpClient = new DefaultHttpClient();
					String paramString = URLEncodedUtils.format(params, "utf-8");
					url += "?" + paramString;
					HttpGet httpGet = new HttpGet(url);

					HttpResponse httpResponse = httpClient.execute(httpGet);
					HttpEntity httpEntity = httpResponse.getEntity();
					is = httpEntity.getContent();
				}			
				

			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

			try {
				//BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
				BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8);
				StringBuilder sb = new StringBuilder();
				String line = null;
				while ((line = reader.readLine()) != null) {
					sb.append(line + "\n");
				}
				is.close();
				json = sb.toString();
			} catch (Exception e) {
				Log.e("Buffer Error", "Error converting result " + e.toString());
			}

			// try parse the string to a JSON object
			try {
				jObj = new JSONObject(json);
			} catch (JSONException e) {
				Log.e("JSON Parser", "Error parsing data " + e.toString());
			}

			// return JSON String
			return jObj;

		}
	}

 

نظرات

hamidd 11 سال پیش
دنبال یک الگوریتم فشرده سازی بی اتلاف بگردید و پیاده سازیش کنید. اگه داده هاتون در محدوده ی خاصی از کاراکترها هستن الگوریتم های خاصی وجود داره برای فشرده سازی.چند سال پیش یه خورده تحقیق کردم در این مورد. اگه درست یادم باشه الگوریتم "هافمن" یا الگوریتم های مشابه به کارتون بیاد.
javad-PSH 11 سال پیش
میخوام از GZip استفاده کنم تا حدودی انجام دادم ولی بازهم سرعت لود داده هام از سرور پایینه

پاسخ‌ها 1

javad-PSH 11 سال پیش

این کد هم آپدیت کردم ولی بازهم سرعت پایینه


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.zip.GZIPInputStream;  //jpcode
import android.util.Log;

public class JSONParser {

	static InputStream is = null;
	static JSONObject jObj = null;
	static String json = "";

	// constructor
	public JSONParser() {

	}

	// function get json from url
		// by making HTTP POST or GET mehtod
		public JSONObject makeHttpRequest(String url, String method,
				List<NameValuePair> params) {

			// Making HTTP request
			try {
				
				// check for request method
				if(method == "POST"){
					// request method is POST
					// defaultHttpClient
					DefaultHttpClient httpClient = new DefaultHttpClient();
					HttpPost httpPost = new HttpPost(url);
					httpPost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));

					HttpResponse httpResponse = httpClient.execute(httpPost);
					HttpEntity httpEntity = httpResponse.getEntity();
					is = httpEntity.getContent();
					
				}else if(method == "GET"){
					// request method is GET
					DefaultHttpClient httpClient = new DefaultHttpClient();
					String paramString = URLEncodedUtils.format(params, "utf-8");
					url += "?" + paramString;
					HttpGet httpGet = new HttpGet(url);
					httpGet.setHeader("Accept", "application/json");  //jpcode adding gzip
					httpGet.setHeader("Accept-Encoding", "gzip"); //jpcode adding gzip

					HttpResponse httpResponse = httpClient.execute(httpGet);
					HttpEntity httpEntity = httpResponse.getEntity();
					is = httpEntity.getContent();
					Log.d("JSON", is+"");
					is = new GZIPInputStream(is); //jpcode adding gzip
					// convert content stream to a String
					Log.d("JSON", is+"");
					//is.close();
					
				}			
				

			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

			try {
				//BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
				BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8);
				StringBuilder sb = new StringBuilder();
				String line = null;
				while ((line = reader.readLine()) != null) {
					sb.append(line + "\n");
				}
				is.close();
				
				json = sb.toString();
				
			} catch (Exception e) {
				Log.e("Buffer Error", "Error converting result " + e.toString());
			}

			// try parse the string to a JSON object
			try {
				jObj = new JSONObject(json);
			} catch (JSONException e) {
				Log.e("JSON Parser", "Error parsing data " + e.toString());
			}

			// return JSON String
			return jObj;

		}
	}

 

نظرات

javad-PSH 11 سال پیش
دوستان کسی نیست جواب بده؟
hamidd 11 سال پیش
سرعت چی کمه؟ اینترنت تون چیه؟ وای فای یا اینترنت سیم کارت؟ فایل php تون روی لوکال هاسته یا نه؟ به سرورتون فقط با این برنامه درخواست می فرستین یا کاربرای دیگه هم می فرستن و سرورتون مشغوله؟
javad-PSH 11 سال پیش
سلام فایل php روی سروره-سرعت دریافت اطلاعات از سرور پایینه- اینو نمیدونم که سرور مشغوله

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .