2017-03-07 117 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