默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求助RainbowChat的Android端HTTP接口返回"returnValue"信息
阅读(29269) | 评论(5 收藏 淘帖
jack你好,反复阅读了你推荐的文章,经过一天尝试,已初步会用token
String token = getSHA256Str(fullPhone+jkBuffer+exp+SECRET);        
return JSON.toJSONString(RestHashMap.n().p("stat_id", statidForReturn).p("full_Phone", fullPhone).p("code", jkBuffer).p("exp", exp).p("token", token));
服务端返回
【<== 处理完成-返回JSON结果】:{"success":true,"returnValue":"{\"full_Phone\":\"8617058101768\",\"code\":\"4038\",\"exp\":1536550182648,\"stat_id\":\"1\",\"token\":\"7af7bb9fb791f7b4976b6a6aff2d093cfdf77bb489deb32ddbd57fe12e80e365\"}"} | (MyControllerJSON.sendToClient:444)

请问服务端显示正常返回returnValue,但客户端log在不同的筛选设置下反复快速抓取查不到,是没有收到,还是log没显示?客户端对returnValue的第一步处理在哪个文件中?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:RainbowChat
上一篇:[已回复] 求助RainbowChat中我新增了自定义的接口后,调用出错的问题下一篇:[已回复] 上线部署后发现的一些问题处理及求助
推荐方案
评论 5
仔细研究一下andriod端的HttpServiceJASONImpl这个类(及其父类)的代码实现原理。
android端的http接口逻辑不复杂,全在这个类里了。

                调用文件:        return HttpRestHelper.submitSendPinToServer(sendPinData); //直接从这里取返回值可以吗?还是需要进一步追溯到sendObjToServer?

        public static String parseSendPinFromServer(String jsonOfResult)
        {
                JSONObject nwObj = JSONObject.parseObject(jsonOfResult);
                return nwObj.getString("stat_id");
        }
jsonofResult的赋值是从        return nwObj.getString("stat_id");中的“stat_id”来的吗?

客户端报错:29660-29660/com.x52im.rainbowchat_pro W/System.err: java.lang.NullPointerException: Attempt to invoke interface method 'void com.android.okhttp.internal.http.Transport.writeRequestHeaders(com.android.okhttp.Request)' on a null object reference需要处理吗?
客户端业务逻辑:
        /**
                 * 处理服务端返回的结果信息.
                 */
                protected void onPostExecuteImpl(Object jsonOfResult)
                {
                        Object retVal = jsonOfResult;//dfs.getReturnValue();
                        if(retVal != null)
                        {
                                //需在HttpRestHelper中定义
                                String statcode = HttpRestHelper.parseSendPinFromServer((String)retVal);
                                System.out.println(statcode); //测试
                                if(!CommonUtils.isStringEmpty(statcode))
                                {
                                    System.out.println("返回码返回码返回码~~~~~~0000000000"+statcode);//测试
                                        // 返回值“0”,本次发送失败!
                                        if(statcode.equals("0"))
                                        {
                        System.out.println("0的情况: "+statcode); //测试
                                                new AlertDialog.Builder(RegisterActivity.this)
                                                                .setTitle(R.string.general_error)
                                                                .setMessage("发送失败")
                                                                .setPositiveButton(R.string.general_ok,   null);
                                                //        .setNegativeButton(R.string.general_cancel, null).show();
                                                return; // 失败了,直接return
                                        }
                                        // 发送成功
                                        else
                                        {
                        System.out.println("非0的情况: "+statcode); //测试
                                                new AlertDialog.Builder(RegisterActivity.this)
                                                                .setTitle("ok")
                                                                .setMessage("发送成功")
                                                                .setPositiveButton(R.string.general_ok,   null);
                                                //        .setNegativeButton(R.string.general_cancel, null).show();
                                                return; // 成功了,直接return
                                        }
                                }
                        }

                        //否则是出现了其它注册失败问题,弹出提示框
                        new AlertDialog.Builder(RegisterActivity.this)
                                        .setTitle(R.string.general_error)
                                        .setMessage(R.string.register_form_error_message)
                                        .setPositiveButton(R.string.general_ok,   null)
                                        .setNegativeButton(R.string.general_cancel, null).show();
                        return;
                }

客户端log:
09-10 13:36:59.487 4721-4721/com.x52im.rainbowchat_pro I/System.out: 1
   返回码返回码返回码~~~~~~00000000001
   非0的情况: 1

明明已经检测到返回值为1,为什么不弹出 AlertDialog?按照源码逻辑,无论如何,成功、失败、未知,都会出现提示框
引用:freeman 发表于 2018-09-10 13:40
客户端业务逻辑:
        /**
                 * 处理服务端返回的结果信息.

你虽然new AlertDialog.Builder,但是你没看到你把.show那行代码给注释掉了吗。。。。这是Android弹出对话框代码的基本用法了
引用:JackJiang 发表于 2018-09-10 13:52
你虽然new AlertDialog.Builder,但是你没看到你把.show那行代码给注释掉了吗。。。。这是Android弹出对 ...

大意了
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部