无法正确获取json数据

无法正确获取json数据

问题描述:

我使用的是android volley从我的远程mysql数据库访问我的json数据。大多数时候它没有得到任何数据,它总是进入response.errorlistener部分,但有时它可以正常工作。请告诉我什么是访问Web服务最有效的方式。所有的无法正确获取json数据

05-06 13:18:49.055 18409-18409/com.goworks.readyworks D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.2, mControlPoint1y = 0.65, mControlPoint2x = 0.28, mControlPoint2y = 0.97 05-06 13:18:49.055 18409-18409/com.goworks.readyworks D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.2, mControlPoint1y = 0.65, mControlPoint2x = 0.28, mControlPoint2y = 0.97 05-06 13:18:49.055 18409-18409/com.goworks.readyworks D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.2, mControlPoint1y = 0.65, mControlPoint2x = 0.28, mControlPoint2y = 0.97 05-06 13:18:49.055 18409-18409/com.goworks.readyworks D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.2, mControlPoint1y = 0.65, mControlPoint2x = 0.28, mControlPoint2y = 0.97 05-06 13:18:49.085 18409-18805/com.goworks.readyworks E/Volley: [569] NetworkDispatcher.run: Unhandled exception java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() at android.os.Handler.(Handler.java:200) at android.os.Handler.(Handler.java:114) at android.widget.Toast$TN.(Toast.java:342) at android.widget.Toast.(Toast.java:99) at android.widget.Toast.makeText(Toast.java:248) at com.goworks.readyworks.RegisterActivity$5.getParams(RegisterActivity.java:314) at com.android.volley.Request.getBody(Request.java:468) at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:253) at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:227) at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107) at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:97) at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:114) 05-06 13:18:49.235 18409-18409/com.goworks.readyworks E/Registration Error:: com.android.volley.VolleyError: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

if (isValidated()) { 

      pDialog = new ProgressDialog(RegisterActivity.this); 
      pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      pDialog.setTitle("Making a member"); 
      pDialog.setMessage("Please Wait..."); 
      pDialog.setIndeterminate(true); 
      pDialog.setCancelable(true); 
      pDialog.show(); 

      userUsername = uname.getText().toString(); 
      userPassword = pass.getText().toString(); 
      emailAddress = email.getText().toString(); 
      userAddress = address.getText().toString(); 
      userContact = contact.getText().toString(); 

      StringRequest stringrequest = new StringRequest(Request.Method.POST, url + "registration.php", 
        new Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          try { 

           JSONArray jsonArray = new JSONArray(response); 
           JSONObject jsonObject = jsonArray.getJSONObject(0); 
           String code = jsonObject.getString("code"); 
           String message = jsonObject.getString("message"); 

           if (code.equals("reg_success")) { 
            Toast.makeText(RegisterActivity.this, message, Toast.LENGTH_SHORT).show(); 
            pDialog.cancel(); 
            Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
            startActivity(intent); 
            finish(); 

           } else if (code.equals("reg_failed")) { 
//         Snackbar.make(v, message, Snackbar.LENGTH_LONG).setAction("Action", null).show(); 
            pDialog.cancel(); 
            Toast.makeText(getApplicationContext(),"Not Registered",Toast.LENGTH_SHORT).show(); 

           } 


          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 

         } 
        }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
          Toast.makeText(getApplicationContext(), "Something went wrong, Please try again", Toast.LENGTH_SHORT).show(); 
//     Snackbar.make(v, "Something went wrong, Please try again", Snackbar.LENGTH_LONG).setAction("Action", null).show(); 
        pDialog.cancel(); 
        Log.e("Registration Error:", String.valueOf(error)); 
       } 
      }) { 
       @Override 
       protected Map<String, String> getParams() throws AuthFailureError { 
        Map<String, String> params = new HashMap<String, String>(); 

        params.put("username", userUsername); 
        params.put("password", userPassword); 
        params.put("email", emailAddress); 
        params.put("contact", userContact); 
        params.put("address", userAddress); 
        params.put("location", finalCoords); 

        Toast.makeText(getApplicationContext(), "Data Delievered", Toast.LENGTH_SHORT).show(); 

        return params; 
       } 
      }; 

      RequestQueue requestQueue = Volley.newRequestQueue(RegisterActivity.this); 
      requestQueue.add(stringrequest); 
     } 
+1

秀代码添加下面的代码是什么错误和共享的logcat –

+0

的问题是你的远程MySQL数据库。 –

+0

它只在注册部分发出问题。在登录部分和其他事情,它的工作完全正常。 –

首先检查在onErrorResponse(..){

if (error instanceof TimeoutError) { 
Toast.makeText(context,"TimeoutError",Toast.LENGTH_SHORT).show(); 
} else if (error instanceof NoConnectionError) { 
    Toast.makeText(context,"NoConnectionError",Toast.LENGTH_SHORT).show(); 
} else if (error instanceof AuthFailureError) { 
    Toast.makeText(context,"AuthFailureError",Toast.LENGTH_SHORT).show(); 
} else if (error instanceof ServerError) { 
    Toast.makeText(context,"ServerError",Toast.LENGTH_SHORT).show(); 
} else if (error instanceof NetworkError) { 
    Toast.makeText(context,"NetworkError",Toast.LENGTH_SHORT).show(); 
} else if (error instanceof ParseError) { 
    Toast.makeText(context,"ParseError",Toast.LENGTH_SHORT).show(); 
} 
+0

它什么也没有显示。 –

+0

什么是响应字符串? –

+0

尝试此行,错误地得到了什么? 'Toast.makeText(背景下,error.getMessage(),Toast.LENGTH_SHORT).show();'' –