新人问一个简单的有关问题,有关网络超时的
新人问一个简单的问题,有关网络超时的
我是新手,这两天做了做了一个学院新闻的客户端,但也发现了一些问题,有时候学校的服务器会停止维护,有时候会网络连接超时,出现这些情况时,我想让程序提示用户,而不是强制退出,怎么解决?
------解决方案--------------------
网络请求时异常错误是有很多不同的;超时是SocketTimeOutException ;你在Exception 这个异常捕捉之前
捕捉下超时的异常;
根据不同的异常 你可以给与不同的toast信息提示用户;
看了你的代码 timeout(3000)大概的意思是3000毫秒 (我猜的)你用的这个 我没见过也懒得去找了; 你可以改动这个值
来设置超时时间
------解决方案--------------------
一般来说,设置一个超时时间,一般http会是5000毫秒,超时之后就提示用户重新加载或者做其他
------解决方案--------------------
一楼说的不错,在报错的地方try,catch就行了,错误类型SocketTimeOutException
------解决方案--------------------
设置超时时间,捕捉异常,将异常通知到UI线程,就好了
我是新手,这两天做了做了一个学院新闻的客户端,但也发现了一些问题,有时候学校的服务器会停止维护,有时候会网络连接超时,出现这些情况时,我想让程序提示用户,而不是强制退出,怎么解决?
new Thread()
{
public void run()
{
String mytitle = null;
String mytime=null;
try
{
mytitle = new String();
mytime=new String();
Elements topnews ;
Document doc = Jsoup.connect(getnewPage(id,page)).timeout(3000).get();
if("4".equals(id))
{
topnews = doc.getElementsByClass("list");
}
else
{
topnews = doc.getElementsByClass("contList");
}
Elements links = topnews.select("a[href]");
Elements time=topnews.select("td[width=80]");
if("4".equals(id))
{
for (int i=0;i<15;i++) {
map=new HashMap<String,Object>();
mytitle=links.get(i+2).text();
Log.e("aaaaaaa", mytitle);
pagelink[i+1]=links.get(i+2).attr("abs:href");
mytime=time.get(i).text();
map.put("title", mytitle);
map.put("time", mytime);
lists.set(i+1, map);
}
}
else
{
for (int i=0;i<links.size();i++) {
map=new HashMap<String,Object>();
mytitle=links.get(i).text();
Log.e("aaaaaaa", mytitle);
pagelink[i+1]=links.get(i).attr("abs:href");
mytime=time.get(i).text();
map.put("title", mytitle);
map.put("time", mytime);
lists.set(i+1, map);
}
}
Message m=new Message();
m.what=1;
mainTab.this.handler.sendMessage(m);
}
catch (Exception e)
{
mytitle = e.getMessage();
Toast.makeText(mainTab.this, "网络未开启或者连接超时", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
finally
{
dialog.dismiss();
}
}
}.start();
网络
exception
android
超时
------解决方案--------------------
网络请求时异常错误是有很多不同的;超时是SocketTimeOutException ;你在Exception 这个异常捕捉之前
捕捉下超时的异常;
根据不同的异常 你可以给与不同的toast信息提示用户;
看了你的代码 timeout(3000)大概的意思是3000毫秒 (我猜的)你用的这个 我没见过也懒得去找了; 你可以改动这个值
来设置超时时间
------解决方案--------------------
一般来说,设置一个超时时间,一般http会是5000毫秒,超时之后就提示用户重新加载或者做其他
------解决方案--------------------
一楼说的不错,在报错的地方try,catch就行了,错误类型SocketTimeOutException
------解决方案--------------------
设置超时时间,捕捉异常,将异常通知到UI线程,就好了