我正在使用 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,它非常有用,可以解决我们的大部分问题:) 祝您好运
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)