if-else语句在httpurlconnection中始终输出else

最后发布: 2017-11-25 07:51:07


问题

我有一个代码,可以将服务器成功返回到android,如下所示:

BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
    sb.append(line + "\n");
}
is.close();
String response = sb.toString();
//HERE YOU HAVE THE VALUE FROM THE SERVER
Log.d("Your Data", response);

//if(response == "0"){ still not fix
if(response.equals("0")){
    Log.d("berhasil","keknya");
    db.updateContact(new Contact(idsql,null,1,null));
}
else{
    Log.d("Error", "ubah data");
}

在我的logcat中, log.d("your data", response)为0,但该语句始终像下面这样抛出:

日志猫

我该如何解决?

android
回答

使用以下逻辑逐行构建StringBuilder响应:

sb.append(line + "\n");

因此,如果您只有一个响应0 ,那么您的字符串生成器实际上将包含以下内容:

0\n

如果这个猜想是正确的,那么如果您修剪空白然后将其与零进行比较,您将获得预期的结果:

if (response.trim().equals("0")) {
    Log.d("berhasil", "keknya");
    db.updateContact(new Contact(idsql, null, 1, null));
}
else {
    Log.d("Error", "ubah data");
}

请注意,如果您只想检查服务器响应代码,则HttpURLConnection API已经公开了一种方法:

try {
    URL url = new URL("http://www.someurl.com");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    int responseCode = conn.getResponseCode();

    if (responseCode == HttpURLConnection.HTTP_OK) {
        server_response = readStream(conn.getInputStream());
        Log.v("index", server_response);
    }
} catch (Exception e) {
    // do something
}


回答

响应中可能会有一些空间,因此if不会执行,请尝试将条件更改为此:

if(response.trim().equals("0"))

trim会删除所有开头和结尾的空格,并为您提供唯一的纯String ,结尾或开头没有空格。