2
我正在尝试获取Apache HTTP客户端执行方法的进度。是否有可能要么监视输入流/ httpclient.exectute的进度
- 获取输入流的安装已读通过一些内部方法或者通过百分比或数据量的执行方法 或
- 监控执行过程中发送?
下面的代码发送一个输入流到服务器(在这种情况下是一个图像),然后适当地存储。问题在于高分辨率照相机和慢速移动运营商很难判断上传是否真正发生。代码确实有用,但需要反馈。
public List writeBinary(String script, InputStream lInputStream) {
Log.d(Global.TAG,"-->writing to server...");
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5*1000);
HttpConnectionParams.setSoTimeout(httpParameters, 60*1000);
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost("http://xxx.xxx.xxx.xxx" + script);
String responseText = null;
List responseArray = new ArrayList();
try {
httppost.setEntity(new InputStreamEntity(lInputStream, -1));
HttpResponse response = httpclient.execute(httppost);
if (response.getStatusLine().getStatusCode() == 200){
InputStream lInputStreamResponse = response.getEntity().getContent();
DataInputStream lDataInputStream = new DataInputStream(lInputStreamResponse);
BufferedReader lBufferReader = new BufferedReader(new InputStreamReader(lDataInputStream));
while ((responseText = lBufferReader.readLine()) != null){
responseArray.add(responseText);
}
lInputStream.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return responseArray;
}