How to send/receive binary stream on android
Android 2.2 SDK:
AndroidHttpClient client = AndroidHttpClient.newInstance("UserAgent");
try {
HttpPost post = new HttpPost( "yoururl" );
post.setEntity(new ByteArrayEntity( Node.toByteArray(this.node)));
HttpResponse response = client.execute(post);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// receive
byte[] buffer = EntityUtils.toByteArray(response.getEntity());
}
} catch (Throwable e) {
System.out.println( "http error: " + e.getMessage() );
}finally {
if (client != null) {
client.close();
}
}
AndroidHttpClient is new api on 2.2
Below the 2.2 SDK:
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset( params, HTTP.UTF_8);
DefaultHttpClient client = new DefaultHttpClient( params );
try {
HttpPost post = new HttpPost( "yoururl" );
post.setEntity(new ByteArrayEntity( Node.toByteArray(this.node)));
HttpResponse response = client.execute(post);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// receive
byte[] buffer = EntityUtils.toByteArray(response.getEntity());
}
} catch (Throwable e) {
System.out.println( "http error: " + e.getMessage() );
}finally {
if (client != null) {
client.getConnectionManager().shutdown();
}
}
Notice: this use http 1.1 protocal version, if you set post.setHeader(new BasicHeader("Content-Length", ""+ totalSize)), you will fail to send sometimes,
It's better to determine by system;