2011-05-16 6 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이 예외를 throw한다고 가정하는 것처럼 보입니다. 그렇지만 그렇지 않습니다. URL의 경로 또는 키가 잘못 되었더라도 HTTP 서버는 여전히 응답을 제공합니다. 응답은 200 OK가 아니며 응답 본문에 찾고있는 내용이 포함되어 있지 않을 수도 있지만 응답은 계속 제공되며 공개 스트림을 사용하여 응답을 읽을 수 있습니다.

올바르게 이해하면 "성공"이 true인지 false인지 결정하기 전에 실제로 응답 (HTTP 상태 코드 포함)의 내용을 검사하려고합니다.

Thane이 내가 준 코드를 게시했습니다. How should I handle server timeouts and error code responses to an http post in Android App?. 이를 검토하고 성공 및 실패한 응답을 적절하게 처리하는 데 필요한 구조를 제공하는지 확인하는 것이 좋습니다.

의미가 있습니까?

+0

tnx 나는 회신하기에는 너무 늦었다 고 생각하지만 이해가된다. :) 다시 tnx – Alanagh