したがって、以下のコードを使用して 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を介して、できればサードパーティのライブラリなしで大きなデータを送信する最良の方法は何ですか?