【问题标题】:org.json.JSONException: No value for success Exceptionorg.json.JSONException:没有成功异常的值
【发布时间】:2015-05-05 08:28:11
【问题描述】:

我的注册 AsyncTask 运行良好,我的数据保存在 PHP MYSQL 上运行良好,但我面临一个异常。

 public class SignupJson extends AsyncTask<String,String,String> {


            //SignupJSONParser sjson = new SignupJSONParser();
            JSONObject json = new JSONObject();
            //private static final String TAG_SUCCESS = "success";

            HttpParams mhttpparams = new BasicHttpParams();


            @Override
            protected void onPreExecute() {

                pDialog = new ProgressDialog(SignupActivity.this);
                pDialog.setMessage("Creating Account..");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(true);
                pDialog.show();
                super.onPreExecute();
            }

            @Override
            protected String doInBackground(String... args) {

                String getName = _Name.getText().toString();
                String  getEmail = _Email.getText().toString();
                String  getPassword = _Password.getText().toString();

         List<NameValuePair> pair = new    ArrayList<NameValuePair>();
                pair.add(new BasicNameValuePair("name",getName));
                pair.add(new BasicNameValuePair("id",getEmail));
                pair.add(new BasicNameValuePair("pass", getPassword));

                // int success=0;
                json = JSONParser.makeHttpRequest( URL,"POST", pair);

                Log.d("Create Response", json.toString());

                try {

                    String success = json.getString(TAG_SUCCESS);

                    //success = json.getInt(TAG_SUCCESS);

                    if (json.getString(TAG_SUCCESS)!=null) {

                        if (Integer.parseInt(success)==1)
                        {


                        Log.d("User Created!", json.toString());
                        Intent login = new Intent(getApplicationContext(), LoginActivity.class);
                        startActivity(login);
                        // closing this screen

                        finish();

                        //return json.getString(TAG_MESSAGE);

                    }
                        else {

                            Log.d("Registration Failure!", json.getString(TAG_MESSAGE));

                            return json.getString(TAG_MESSAGE);
                        }
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                    // success=0;
                }

                return null;
                // return ""+success;
            }

            @Override
            protected void onPostExecute(String s) {


                pDialog.dismiss();

                if (json != null){
                    Toast.makeText(getApplicationContext(),"Registration Done",Toast.LENGTH_SHORT).show();
                    //Toast.makeText(MainActivity.this, json.toString(), Toast.LENGTH_LONG).show();
                }

            }



        }

    }

LogCat:

com.example.ahmadkhan.routeapp W/System.err: org.json.JSONException: 没有成功的价值 /com.example.ahmadkhan.routeapp W/System.err:在 org.json.JSONObject.get(JSONObject.java:354) com.example.ahmadkhan.routeapp W/System.err:在 org.json.JSONObject.getString(JSONObject.java:514) /com.example.ahmadkhan.routeapp W/System.err﹕在 com.example.ahmadkhan.routeapp.SignupActivity$SignupJson.doInBackground(SignupActivity.java:169) com.example.ahmadkhan.routeapp W/System.err﹕在 com.example.ahmadkhan.routeapp.SignupActivity$SignupJson.doInBackground(SignupActivity.java:129) com.example.ahmadkhan.routeapp W/System.err:在 android.os.AsyncTask$2.call(AsyncTask.java:287) com.example.ahmadkhan.routeapp W/System.err:在 java.util.concurrent.FutureTask.run(FutureTask.java:234) com.example.ahmadkhan.routeapp W/System.err:在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) com.example.ahmadkhan.routeapp W/System.err:在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:108com.example.ahmadkhan.routeapp W/System.err:在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:57com.example.ahmadkhan.routeapp W/System.err:在 java.lang.Thread.run(Thread.java:841)

在线错误

String success = json.getString(TAG_SUCCESS);

//success = json.getInt(TAG_SUCCESS);

if (json.getString(TAG_SUCCESS)!=null) {
}

谁能建议我一个解决方案如何摆脱这个错误,并告诉我如何在与 PHP Wamp Server 连接成功和失败的情况下处理服务器响应。

【问题讨论】:

标签: java json exception android-asynctask getstring


【解决方案1】:
org.json.JSONException: No value for success
//means no key-value found for this key - "success"

使用 has() 方法处理此异常

if(<jsonobject>.has("success"))
{
   //your code
}

【讨论】:

    【解决方案2】:

    JSONObject.get*() 方法确实返回null,当在对象中找不到输入键时,它们会抛出JSONException

    例如getString():

    抛出: JSONException - 如果键没有字符串值。

    改用JSONObject.opt*() 方法:

    String success = json.optString(TAG_SUCCESS);
    if (success != null) {
        // ...
    }
    

    【讨论】:

    • dhke 我尝试了您的解决方案,我的崩溃现在没有插入任何内容:( 我收到这种错误地址簿标签 [en_US]: [, A, B, C, D, E, F, G , H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, Α, Β, Γ, Δ, Ε跨度>
    • 我很确定地址簿日志与您的应用程序无关,因此您可能需要再次检查 logcat 以找到崩溃的实际原因。另外:您确定 JSON 对象包含正确的数据吗?目前,您似乎在猜测错误,但这是行不通的。
    • #dhke 我解决了我的问题 我的 PHP JSON 有问题它没有返回成功变量结果 1 或 0 :) 无论如何感谢您的时间和关注。
    【解决方案3】:

    试试这个我希望它会帮助你..!

    JSONObject json = JSONParser.makeHttpRequest( URL,"POST", pair);

               if(json!=null)
                 {
                Log.d("Create Response", json.toString());
    
                try {
    
                    String success = json.getString(TAG_SUCCESS);
    
                    //success = json.getInt(TAG_SUCCESS);
    
                    if (json.getString(TAG_SUCCESS)!=null) {
    
                        if (Integer.parseInt(success)==1)
                        {
    
    
                        Log.d("User Created!", json.toString());
                        Intent login = new Intent(getApplicationContext(),  LoginActivity.class);
                        startActivity(login);
                        // closing this screen
    
                        finish();
    
                        //return json.getString(TAG_MESSAGE);
    
                    }
                        else {
    
                            Log.d("Registration Failure!", json.getString(TAG_MESSAGE));
    
                            return json.getString(TAG_MESSAGE);
                        }
                    }
    
                } catch (JSONException e) {
                    e.printStackTrace();
                    // success=0;
                }
          }else{
              Log.d("getting null response from server!");
           }
    

    【讨论】:

    • 什么也没发生,我的应用程序崩溃了我得到了这个异常。I/ContactLocale:地址簿标签 [en_US]: [, A, B, C, D, E, F, G, H, I, J , K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, Α, Β, Γ, Δ, Ε, ζ, Η, Θ, Ι , Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω, , А, Б, В, Г, Д, Е, Є, Ж, З, И, І, Ї, Й, К, Л, М, Н, О, П, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Ю, Я, , א, ב, ג , ד, ה, ו, ז, ח, ט, י, כ, ל, מ, נ, ס, ע, פ, צ, ק, ר, ש, ת, , ا, ب, ت, ث, ج, ح, خ, د, ذ, ر, ز, س, ش, ص, ض, ط, ظ, ع, غ, ف, ق, ك, ل, م, ن, ه, و, ي, , ก, ข , ฃ, ค, ฅ, ฆ,
    • @ahmedaslam,你能在这里分享你的网址吗,或者你可以手动检查你从服务器得到什么样的响应,然后再次检查 logcat 以找到崩溃的实际原因。
    • #vikas balyan 我解决了我的问题我的 PHP JSON 有问题它没有返回成功变量结果 1 或 0 :) 无论如何感谢您的时间和关注。
    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多