【问题标题】:Handling wrong URLs处理错误的 URL
【发布时间】:2011-05-16 01:28:36
【问题描述】:

我的服务器上存储了 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;
}

  }

【问题讨论】:

    标签: java android http url


    【解决方案1】:

    如果没有复制问题所需的完整最小代码,也没有关于特定错误的信息(如堆栈跟踪),我只是猜测 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? 中发布了我给他的一些代码。我建议查看它,看看它是否提供了相应地处理成功和失败响应所需的结构。

    有意义吗?

    【讨论】:

    • tnx 我想我来不及回复了,但这是有道理的:)。 tnx 再次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多