【发布时间】:2017-05-06 07:51:22
【问题描述】:
我正在使用 android volley 从我的远程 mysql 数据库中访问我的 json 数据。大多数时候它没有得到任何数据,它总是进入 response.errorlistener 部分,但有时它工作正常。请告诉我访问网络服务最有效的方式是什么。
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:未处理的异常 java.lang.RuntimeException:无法在线程内创建处理程序 没有调用 Looper.prepare() java.lang.RuntimeException:无法在线程内创建处理程序 没有调用 Looper.prepare() 在 android.os.Handler.(Handler.java:200) 在 android.os.Handler.(Handler.java:114) 在 android.widget.Toast$TN.(Toast.java:342) 在 android.widget.Toast.(Toast.java:99) 在 android.widget.Toast.makeText(Toast.java:248) 在 com.goworks.readyworks.RegisterActivity$5.getParams(RegisterActivity.java:314) 在 com.android.volley.Request.getBody(Request.java:468) 在 com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:253) 在 com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:227) 在 com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107) 在 com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:97) 在 com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:114) 05-06 13:18:49.235 18409-18409/com.goworks.readyworks E/注册错误:: com.android.volley.VolleyError: java.lang.RuntimeException:无法在线程内创建处理程序 没有调用 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);
}
【问题讨论】:
-
显示代码并分享logcat
-
问题是你的远程mysql数据库。
-
它只在注册部分给出问题。在登录部分和其他方面它工作得很好。
-
首先检查网络连接,第二次检查URL,第三次检查参数必须相同,并且不能在参数中附加空值。希望对你有帮助
-
去掉` throws AuthFailureError `试试看。
标签: android web-services api