آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

فشرده سازی json

javad-PSH  11 سال پیش  11 سال پیش
+1 0

سلام دوستان کسی میدونه چطور اطلاعاتی رو که از طریق 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;

		}
	}

 

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

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


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;

		}
	}

 

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

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