2011-05-16 100 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