我正在使用android sdk附带的apache httpclient使用多部分http post在服务器上上载文件。问题是,当我关闭设备上的wifi连接,并且在设置sotimeout和connectiontimeout之后设备没有互联网访问和事件时,代码将无限期地挂在httpclient.execute()
语句上,并且每次都会发生。
我的代码是:
HttpClient httpclient = new DefaultHttpClient();
HttpConnectionParams.setSoTimeout(httpclient.getParams(), 5000);
ConnManagerParams.setTimeout( httpclient.getParams(), 5000 );
HttpConnectionParams.setSocketBufferSize(httpclient.getParams(), 8192);
HttpPost("http://myurl");
File file = new File(fileAbsolutePath);
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file);
mpEntity.addPart("uploadedfile", cbFile);
httppost.setEntity(mpEntity);
if(!backupCancel)
{
System.out.println("<<<<<<<<<<<<<<<<<<<<<<Actually transferring file>>>>>>>>>>>>>>>");
HttpResponse response = httpclient.execute(httppost);
}
最佳答案
试试这个:
假设你有一个httpclient对象,它是androidhttpclient或defaulthttpclient的实例
HttpParams httpParams = httpClient.getParams();
httpParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, Timeout in milli seconds);
你得到的httpparams是一个引用对象,因此它执行setintparameter将修复这个问题
除非您对自定义超时有特殊要求,否则更喜欢使用androidhttpclient,它非常有用,可以解决我们的大多数问题:)祝您好运