处理错误的网址

时间:2011-05-16 01:28:37

标签: java android http url

我的csv文件存储在我的服务器上。如果我输入正确的密钥(这是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;
}

  }

1 个答案:

答案 0 :(得分: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?发布了一些我给他的代码。我建议您查看它,看看它是否提供了相应处理成功和失败响应所需的结构。

有意义吗?