Android实现简单的账号注册功能时JSON报错?

问题描述

Android实现简单的账号注册功能时JSON报错?

最近在做一个对接融云的聊天界面,在实现注册功能时报错。具体如下:
通过Android客户端注册账号,服务器和数据库用Apache+php+Mysql+phpmyadmin。
Android主要代码
final String username = et_username.getText().toString();
String password = et_password.getText().toString();

            if (username.equals("") || password.equals("")) {
                Toast.makeText(RegActivity.this, "用户名或密码不能为空", Toast.LENGTH_LONG).show();
            } else {
                AsyncHttpClient client = new AsyncHttpClient();
                RequestParams params = new RequestParams();
                params.add("username", username);
                params.add("password", password);
                client.post("http://192.168.1.101/chat/reg.php", params, new AsyncHttpResponseHandler() {
                    @Override
                    public void onSuccess(int i, Header[] headers, byte[] bytes) {
                        String response = new String(bytes);
                        Log.e("debug", response);
                        JSONObject object = null;
                        try {
                            object = new JSONObject(response);
                            String status = object.getString("status");
                            if (status.equals("exists")) {
                                Toast.makeText(RegActivity.this, "用户名已存在,请更换", Toast.LENGTH_LONG).show();
                            } else if (status.equals("error")) {
                                Toast.makeText(RegActivity.this, "出现错误,请稍后重试", Toast.LENGTH_LONG).show();

                            } else if (status.equals("success")) {
                                String token = object.getString("token");
                                App.token = token;
                                App.username = username;
                                App.isLogin = true;
                                Intent intent = new Intent(RegActivity.this, MainActivity.class);
                                startActivity(intent);
                                RegActivity.this.finish();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                        Toast.makeText(RegActivity.this, "网络错误,请稍后重试", Toast.LENGTH_LONG).show();
                    }
                });

** D:wampApache22htdocschat中reg.php代码**
<?php
require_once('./conn.php');
require_once('./api.php');

if(isset($_POST['username']) && isset($_POST["password"]))
{
$password = md5($_POST['password']);

$sql = "select * from `user` where username='$_POST[username]'";
$query = mysqli_query($connect, $sql);
$row = mysqli_num_rows($query);
if($row == 0) {
    $p = new ServerAPI("vnroth0krcc8o", "77S067I5vYC");
    $r = $p->getToken($_POST['username'], "", "");
    $obj = json_decode($r);
    if($obj->code != 200) {
        $result = array("status" => "error");
        echo json_encode($result);
    }
    else {
        $token = $obj->token;
        $sql2 = "insert into `user` (username, password, token) values('$_POST[username]', '$password', '$token')";
        $query = mysqli_query($connect, $sql2);
        $result = array("status"=>"success", "token"=>$token);
        echo json_encode($result);
    }
}
else {
    $result = array("status"=>"exists");
    echo json_encode($result);
}

}
?>
点击注册填写账号密码后报错信息是
04-30 02:25:16.236 6715-6801/com.gzs.jike_chat D/OpenGLRenderer: endAllStagingAnimators on 0xa46aad00 (RippleDrawable) with handle 0xa44ae3a0
04-30 02:25:27.004 6715-6728/com.gzs.jike_chat I/art: Background sticky concurrent mark sweep GC freed 1590(58KB) AllocSpace objects, 0(0B) LOS objects, 6% free, 2MB/2MB, paused 12.793ms total 27.808ms
04-30 02:25:36.852 6715-6715/com.gzs.jike_chat V/AsyncHttpResponseHandler: Progress 174 from 174 (100%)
04-30 02:25:36.852 6715-6715/com.gzs.jike_chat E/debug: 用户名称 不能为空

Notice: Trying to get property of non-object in D:wampApache22htdocschatreg.php on line 16

{"status":"error"}
04-30 02:25:36.852 6715-6715/com.gzs.jike_chat W/System.err: org.json.JSONException: Value 用户名称 of type java.lang.String cannot be converted to JSONObject
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at org.json.JSON.typeMismatch(JSON.java:111)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at org.json.JSONObject.(JSONObject.java:160)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at org.json.JSONObject.(JSONObject.java:173)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at com.gzs.jike_chat.RegActivity$1$1.onSuccess(RegActivity.java:54)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:311)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:138)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at android.os.Looper.loop(Looper.java:135)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5254)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at java.lang.reflect.Method.invoke(Native Method)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
04-30 02:25:36.853 6715-6715/com.gzs.jike_chat W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
04-30 02:25:48.368 6715-6723/com.gzs.jike_chat W/art: Suspending all threads took: 6.184ms
在网上没找到解决方案,有的说是jar包版本问题,我在lib只导入一个android-async-http-1.4.6.jar,请大神指导下,该如何解决这个问题?谢谢!

解决方案

Log.e("debug", response);
这个输出是什么,可能是乱码吧?
04-30 02:25:36.852 6715-6715/com.gzs.jike_chat W/System.err: org.json.JSONException: Value 用户名称 of type java.lang.String cannot be converted to JSONObject

1.首先这个返回值可能不是json 格式,这里需要try catch 一下;失败就跳出去,从log查原因;

解决方案二:

你应该好好看看融云的API文档

时间: 2024-11-08 21:00:21

Android实现简单的账号注册功能时JSON报错?的相关文章

短信发送-在通过百度API提供的定位服务实现发送包含地理位置短信的功能时软件报错,求解~~

问题描述 在通过百度API提供的定位服务实现发送包含地理位置短信的功能时软件报错,求解~~ 请问如何将获取到的地理位置信息转换成可以在短信发送代码中调用的字符呢??

Android编程简单实现拨号器功能的方法

本文实例讲述了Android编程简单实现拨号器功能的方法.分享给大家供大家参考,具体如下: 学习Android已经有2天时间了,没学习的时候觉得android可能很枯燥,但是学过之后我发觉其实这个比什么javaweb好玩多了.学习android可以见到一些很有趣的东西,这里呢也建议学习javaME的人不要在煎熬了,学习android吧.在写程序之前也需要知道android的工作原理 1.获取组件清单 2.登记或注册组件 3.将组件封装成意图 4.把意图交给意图处理器进行处理 5.把界面显示给用户

Android编程简单实现ImageView点击时背景图修改的方法_Android

本文实例讲述了Android编程简单实现ImageView点击时背景图修改的方法.分享给大家供大家参考,具体如下: 在使用ImageView时,当被点击时,希望背景图修改一下,这样显示被点击效果明显一些.在这里,一个很简单的方法,最起码是个很清晰的方法.在res/drawable文件夹下创建一个xml文件.比如my.xml,内容如下: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:an

Android封装MVP实现登录注册功能

本文实例为大家分享了Android封装MVP实现登录注册功能,供大家参考,具体内容如下 model包: import com.bwei.mvps.bean.UserBean; /** * 1. 类的用途 * 2. @author forever * 3. @date 2017/9/1 16:00 */ public interface IUserModel { void setFirstName(String firstName); void setLastName(String lastNam

android studio 中编译时老是报错

问题描述 android studio 中编译时老是报错 在文件中都有,但是为什么还是有错: 解决方案 http://zhidao.baidu.com/link?url=nqNjZq730FSkqIB-yNckbp0co3ENuoAoHQTY4xq4zW73Fe--x88FKQ3JiYA_R1uZhnyy9T6ERxhfOQlmrWgKkEyA4yu2nC-b4uBh2NM_Bqu 解决方案二: 报的什么错呢? 不然没法分析的

sdl-编译pjsip android版时SDL报错

问题描述 编译pjsip android版时SDL报错 为了支持x264解码,使用支持x264的ffmpeg和SDL2.0编译pjsip的android版.编译好了SDL2,在pjsip的根目录下使用./configure-android 能够找到SDL2.0.但是编译的时候总是会报错.如图所视: 如果不编译android版,只编译linux版是不会出问题的. 解决方案 Android Studio编译时,adb报错的解决方法编译android时,遇到报错android编译报错问题

android开发-Android开发中,反向地理编码时,报连接被拒绝的错误

问题描述 Android开发中,反向地理编码时,报连接被拒绝的错误 如题,在将经纬度转成地理位置时,在使用Google API时,连接总是错误,但是在电脑浏览器上却可以. 1. StringBuilder url = new StringBuilder(); url.append("http://maps.google.com/maps/api/geocode/json?latlng="); url.append(latitude).append(","); url

java-androidstudio运行时总是报错:求大神指教

问题描述 androidstudio运行时总是报错:求大神指教 报的错:Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:Program Files (x86)Javajdk1.7.0binjava.exe'' finished

插件-androidstudio运行时总是报错

问题描述 androidstudio运行时总是报错 Error:Gradle: A problem occurred configuring root project 'MyApplication'. > Could not resolve all dependencies for configuration ':classpath'. > Cannot resolve external dependency com.android.tools.build:gradle:1.3.0 becau