2017-03-07 101 views
0

我正在使用Volley库和android并从我的服务器获取作为String对象的响应,但无法正确比较它。我尝试以下操作:排球反应字符串在if语句中没有正确比较

RequestQueue queue = Volley.newRequestQueue(this); 
String url = "http://www..."; 
StringRequest postRequest = new StringRequest(Request.Method.POST, url, 
new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     Log.d("from onResponse()", response); 
     if(response.equals("no_such_table")){ 
      //do something 
     }else{ 
      //do something else 
     } 
    } 
}, 
new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     onTaskFailed(error); 
    } 
}) 

Android的监视器打印出预期的字符串(“no_such_table”),但在其他情况下被触发。使用volley库从服务器返回的响应的编码是否存在问题?

我也曾尝试

response.toString().equals("no_such_table") 

String.valueOf(response).equals("no_such_table") 

"no_such_table".equals(response) 

"no_such_table".equals(response.toString()) 

,但我不能得到预期

响应由PHP脚本提供的服务器上为

$val = mysql_query('select 1 from `" . $device_group_id . "` LIMIT 1'); 
if($val == FALSE){ 
    //table does not exist so return message 
    echo "no_such_table"; 
} 
+0

响应通常在JSON格式,它能够更好地第一解析它,然后比较 – Redman

+0

[“看起来”相等,但它们不是](http://ideone.com/Ff23Ip)或任何其他类似的问题... – Selvin

+0

是的,我曾考虑过有害的空间,但使用replaceAll(“”,“”)作为回应不应该有任何空格,仍然不能正常工作 – user2145312

回答

0

我得到了同样的问题,我设法解决它! 尝试在字符串中使用.trim()方法。

@Override 
public void onResponse(String response) { 
    Log.d("from onResponse()", response); 
    response = response.trim(); 
    if(response.equals("no_such_table")){ 
     //do something 
    }else{ 
     //do something else 
    } 
} 
+0

Thankyou。这工作。你知道这是为什么吗? – user2145312

0

先评估它的工作你回答如下:

@Override 
public void onResponse(String response) { 

    if(response != null && response.equals("expected_string")){ 
     //print log of response when it isnt a null value 
     Log.d("from onResponse()", "datas = " + response); 
     //do something 
    }else{ 
     Log.d("from onResponse()", "null response"); 
     //do something else 
    } 
} 
+0

遗憾的是仍然无法正常工作 – user2145312

0

尝试

"expected_string".equals(response) 

"expected_string".equals(response.toString()) 
+0

作者在问题中指出,此解决方案不为他工作以及 – msrd0

0
@Override 
public void onResponse(String response) { 
    Log.d("from onResponse()", response); 
    if(("expected_string").equals(response.toString())){ 
     //do something 
    }else{ 
     //do something else 
    } 
} 
+0

遗憾的是仍然没有工作 – user2145312