【问题标题】:Volley response String not comparing properly in if statementVolley 响应字符串在 if 语句中没有正确比较
【发布时间】:2017-03-07 16:14:21
【问题描述】:

我正在使用带有 android 的 Volley 库并从我的服务器作为 String 对象获得响应,但无法正确比较它。我正在尝试以下方法:

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”),但正在触发 else 情况。使用 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";
}

【问题讨论】:

  • response一般都是json格式,最好先解析再比较
  • "looks" equal but they are not 或任何其他类似问题...
  • 是的,我曾考虑过不需要的空格,但使用 replaceAll(" ", "") 作为响应不应该有任何空格并且仍然无法正常工作

标签: java android string android-volley


【解决方案1】:

我遇到了同样的问题,我设法解决了! 尝试对您的字符串使用 .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
    }
}

【讨论】:

  • 谢谢。这行得通。你知道为什么会这样吗?
【解决方案2】:

首先评估您的回答:

@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
    }
}

【讨论】:

    【解决方案3】:
    @Override
    public void onResponse(String response) {
        Log.d("from onResponse()", response);
        if(("expected_string").equals(response.toString())){
            //do something
        }else{
            //do something else
        }
    }
    

    【讨论】:

      【解决方案4】:

      试试

      "expected_string".equals(response)
      

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

      【讨论】:

      • 作者在问题中表示这个解决方案对他也不起作用
      猜你喜欢
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 2018-08-19
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多