android - 在Android中使用HTTP POST发送大数据

标签 android http post

所以我有一个代码,我可以使用下面的代码使用 HTTP POST 将数据发送到服务器:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Path;

import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;

public void sendData() {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(SERVER_URL);

    Path path = Paths.get("path/to/file");
    byte[] data = Files.readAllBytes(path);

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("data",Base64.encodeBytes(data)));
    nameValuePairs.add(new BasicNameValuePair("id", "123"));

    try {

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
    } catch (Exception e) {
    } 
}

问题是,通过此实现,我无法发送大数据,因为字节数组必须全部适合内存。在 Android 中通过 HTTP POST 发送大数据并且最好不使用第三方库的最佳方式是什么?

最佳答案

不要发布整个内容,而是使用 HttpURLConnection流式传输文件。您可能还想在 AsyncTask 内执行此操作。

本来想写点东西的,结果发现已经有人了 here ...

关于android - 在Android中使用HTTP POST发送大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19825056/

相关文章:

android - 如何使用 Android 设备测量心跳

java - 使用 headless 浏览器进行 Android 网页抓取

Android:在 New eclipse ADT 中安装 Juno Subversive

java - 如何首先使用 Groovy Android Gradle 插件编译 groovy 代码

http - nginx - 使用 gzip 时缺少 etag

json - Angular 2 : Getting data from json file not working

rest - http-only 站点来测试 REST 请求?

jQuery ajax $(xml).find() 适用于 IE 但不适用于 Chrome

php - 如何获取帖子中的所有变量(PHP)

javascript - 将 JS 变量发布到 PHP 脚本的问题