接收到Handler传递出String类型数据后与原始String类型数据.equals()不相等的问题

wjdroid 发布于 2017/08/15 16:56
阅读 117
收藏 0

服务器端代码:
public void xxx(){
     try{
            //一些操作
              ...............................................
           this.outString("钢厂关联物资成功!"); //给客户端的相应数据
        }catch(Exception e){
           e.printStackTrace();
           }
        }
客户端代码:
                      try {
new Thread() {
public void run() {
// 向服务器提交数据
String reponseStr0 = HttpUtil.formUpload(
Constant.URL_MAIN + "xxx.do",
text, pic);
System.out.println(TAG + "-->上传数据后服务器响应数据为: "
+ reponseStr0);
// 将服务器响应回传给UI线程
Message message = Message.obtain();
message.what = 4;
message.obj = reponseStr0.toString();
handler.sendMessage(message);

System.out.println("message 4 -->" + reponseStr0
+ " is already send to handler");
}
}.start();
} catch (Exception e) {
e.printStackTrace();
}
        Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 4: {
String temp = (String) msg.obj;
String ori =new String( "钢厂关联物资成功!");
System.out.println("temp-->" + temp);
System.out.println("ori-->" + ori);
if (temp.equals(ori)) {

System.out.println("temp 和 ori 相等!");
m_pDialog.setMessage("上传成功!");
// 需要关闭这个提示的时候:
m_pDialog.dismiss();
finish();
} else {
System.out.println("temp 和 ori 不相等!");
m_pDialog.setMessage("上传失败!");
// 需要关闭这个提示的时候:
m_pDialog.dismiss();
}
}
break;
default:
break;
}
super.handleMessage(msg);
}
};

然后就一直提示二者不相等,但其实打印出来二者是相等的,请问这是什么问题,烦请路过的各位大神指点一二,小弟感激不尽!
如下是日志打印内容:
08-15 08:36:22.548: I/System.out(5071): temp-->钢厂关联物资成功!
08-15 08:36:22.548: I/System.out(5071): ori-->钢厂关联物资成功!
08-15 08:36:22.548: I/System.out(5071): temp 和 ori 不相等!

加载中
0
wjdroid
wjdroid

问题已解决,原因在于HTTP协议在回传响应的时候在字符串尾部自动加入了一位“空格”,这才使得两个字符串内容不相等,与Android的Handler无关。解决办法就是对于temp调用trim()方法,然后再去与ori进行比较,终得正果!

wjdroid
wjdroid
回复 @zigzagroad : 依照目前的数据传输链路来看,确定是HTTP在回传服务器响应的时候在数据的尾部加入了一个空格。
zigzagroad
zigzagroad
应该确认一下尾部的空格是从哪里开始多出来的。
0
zigzagroad
zigzagroad

不要传中文,传标识、代码或英文。

wjdroid
wjdroid
不是这个问题
0
zigzagroad
zigzagroad

{result:0, bizCode: 12345, msg:"钢厂关联物资成功!"}

// 客户端

int result = json.getInt("result");

if (result == SUCCESS) { // public static final int SUCCESS = 0;

    // toast("钢厂关联物资成功!");

}

wjdroid
wjdroid
问题以解决
0
如比如比
如比如比
保证是同样的编码吗?比如utf8之类的
wjdroid
wjdroid
与编码没关系
返回顶部
顶部