Android CodeIgniter如何接收chunk数据
Android to CodeIgniter how to receive chunk data
目前正在使用:
- Android: Api 19 级
- CodeIgniter
- EasyPHP
我的问题:
我有一个 JSON 数据,我想做的是对其进行 GZIP 压缩并将其发送到我的网站 API,这是由 codeigniter 提供的 运行 并将其数据分块。当我刚刚发送 JSON 数据时,我的网络 API 运行良好,但是当我发送 GZIP 数据然后将其分块时,我什至无法从我的网络 API 接收数据或者它应该是因为我的网络。
该项目的核心发展是在移动应用程序中收集信息,我认为它相当大,因为它实际上测量高达 10 兆字节,这对整个过程来说是一个缩减。将此发送到我的服务器时,这对最终用户端不利,现在我希望它 JSON 数据是 GZIP 然后我希望这些数据的发送被分块,这样它会感觉更快和优化和以前一样。
Android代码:
private void addTaskInThreadPool(final ClassEntry entry) {
try {
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
String s = "{\"entry\":" + gson.toJson(entry) + "}";
pairs.add(new BasicNameValuePair("token", user.token));
pairs.add(new BasicNameValuePair("data", s));
threadPool.addTask(new ClientPostRequest.Builder(ClassSend.this,
GeneralResponse.class,Utils.getbaseUrl(ClassSend.this) + "survey/submit_entry/",
pairs) {
@Override
public Object doInBackground(Object result) {
return result;
}
@Override
public void onPostExecute(Object result) {
}
}.showProgressBar(false).showToast(true).build());
} catch(ClassCastException e) {
Log.e("threadBackGround ClassCast", "Error: " + e);
}
}
有人可以帮助我吗?我的项目和研究需要这个。我需要你的建议,评论家,我非常感谢这可以提升我的编程技能我仍然是这个的新手我需要我的 SO 伙伴帮助我解决我的问题。
刚刚在我的方法 AddTaskInThreadPool 中添加了这段代码
String s = "{\"entry\":" + gson.toJson(unsyncedEntry) + "}";
StringEntity entityForPost = new StringEntity(s);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (GZIPOutputStream gzos = new GZIPOutputStream(baos)) {
gzos.write(entityForPost.toString().getBytes("UTF8"));
gzos.close();
} catch (IOException e) {
e.printStackTrace();
}
byte[] fooGzippedBytes = baos.toByteArray();
String encodeBytes = Base64.encode(fooGzippedBytes);
pairs.add(new BasicNameValuePair("token", user.token));
pairs.add(new BasicNameValuePair("data", s));
而且有效。
目前正在使用:
- Android: Api 19 级
- CodeIgniter
- EasyPHP
我的问题:
我有一个 JSON 数据,我想做的是对其进行 GZIP 压缩并将其发送到我的网站 API,这是由 codeigniter 提供的 运行 并将其数据分块。当我刚刚发送 JSON 数据时,我的网络 API 运行良好,但是当我发送 GZIP 数据然后将其分块时,我什至无法从我的网络 API 接收数据或者它应该是因为我的网络。
该项目的核心发展是在移动应用程序中收集信息,我认为它相当大,因为它实际上测量高达 10 兆字节,这对整个过程来说是一个缩减。将此发送到我的服务器时,这对最终用户端不利,现在我希望它 JSON 数据是 GZIP 然后我希望这些数据的发送被分块,这样它会感觉更快和优化和以前一样。
Android代码:
private void addTaskInThreadPool(final ClassEntry entry) {
try {
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
String s = "{\"entry\":" + gson.toJson(entry) + "}";
pairs.add(new BasicNameValuePair("token", user.token));
pairs.add(new BasicNameValuePair("data", s));
threadPool.addTask(new ClientPostRequest.Builder(ClassSend.this,
GeneralResponse.class,Utils.getbaseUrl(ClassSend.this) + "survey/submit_entry/",
pairs) {
@Override
public Object doInBackground(Object result) {
return result;
}
@Override
public void onPostExecute(Object result) {
}
}.showProgressBar(false).showToast(true).build());
} catch(ClassCastException e) {
Log.e("threadBackGround ClassCast", "Error: " + e);
}
}
有人可以帮助我吗?我的项目和研究需要这个。我需要你的建议,评论家,我非常感谢这可以提升我的编程技能我仍然是这个的新手我需要我的 SO 伙伴帮助我解决我的问题。
刚刚在我的方法 AddTaskInThreadPool 中添加了这段代码
String s = "{\"entry\":" + gson.toJson(unsyncedEntry) + "}";
StringEntity entityForPost = new StringEntity(s);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (GZIPOutputStream gzos = new GZIPOutputStream(baos)) {
gzos.write(entityForPost.toString().getBytes("UTF8"));
gzos.close();
} catch (IOException e) {
e.printStackTrace();
}
byte[] fooGzippedBytes = baos.toByteArray();
String encodeBytes = Base64.encode(fooGzippedBytes);
pairs.add(new BasicNameValuePair("token", user.token));
pairs.add(new BasicNameValuePair("data", s));
而且有效。