2011-05-16 99 views
0

我的csv文件存储在我的服务器上。如果我输入正确的密钥(这是URL的一部分),我得到我想要的,但如果输入的密钥错误,我的应用程序崩溃。我希望能够发现错误。处理错误的URL

String url="http://mysite.com/template"; 
      url=url+et.getText().toString().toLowerCase()+".csv"; 

      csv.setURL(url); 
      if(csv.checkURL()){ 
       enterToDB(); 

      } 
      else{ 
       tv.setText("Wrong key"); 
      }  

和我CSVReader看起来像:

public void setURL(String file){ 

    try { 
     URL url = new URL(file); 
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
    success=true; 
     in.close(); 
    } catch (MalformedURLException e) { success=false;} catch (IOException e) { success=false;  } 
    } 

public boolean checkURL(){ 
    return success; 
} 

    } 

回答

0

没有必要复制问题的完整最少的代码,并没有关于特定错误的是(像堆栈跟踪),我是什么样的信息只是猜测setURL/checkURL例程并不完全按照你想要的来做。他们似乎认为,如果URL中的密钥错误,openStream会抛出异常,但事实并非如此。即使URL中的路径或密钥错误,HTTP服务器仍会提供响应。响应可能不是200 OK,并且响应正文可能不包含您要查找的内容,但它仍会给出响应,并且可以使用打开的流来读取响应。因此,如果我理解正确,那么在确定“成功”是真或假之前,您实际上是想检查响应的内容(可能包括HTTP状态代码)。

Thane发布了一些我在How should I handle server timeouts and error code responses to an http post in Android App?给他的代码。我建议审查它,看看它是否提供了相应的处理成功和失败响应所需的结构。

有意义吗?

+0

tnx我想我迟到回复,但它是有道理的:)。再次 – Alanagh 2011-06-01 23:29:54