嘿伙计们我在应用中工作,当我发送OTP
以验证移动设备验证有错误但是OTP
阻止时,我通过catch
验证我的手机号码错误,Activity
没有进入下一个Acivity
,而且没有显示日志
private void verifyOtp(final String otp){
final StringRequest strReq = new StringRequest(Request.Method.POST,
config.Config.URL_VERIFY_OTP, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
try {
JSONObject responseObj = new JSONObject(response);
// Parsing json object response
// response will be a json object
boolean status =responseObj.getBoolean("status");
if (status==true) {
// parsing the user profile information
JSONObject profileObj = responseObj.getJSONObject(response);
String mobile = profileObj.getString("mobile");
PrefManager pref = new PrefManager(getApplicationContext());
pref.createLogin(mobile);
Intent intent = new Intent(HttpService.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Toast.makeText(getApplicationContext(), "HTTPIF"+status, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "HTTPELSE"+status, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) { //------this is working and give toast----//
System.out.print("jsonError :=>"+e);
Toast.makeText(getApplicationContext(),
"Error is WWW: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "HTTPError: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
}
}) {
MyApplication userinfo = (MyApplication)getApplicationContext();
final String user = userinfo.getuser(); // Global Variable get Value uID
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("akey","xxxxxxxxxx");
params.put("mobileverify", otp);
params.put("uid",user);
Log.e(TAG, "Posting params: " + params.toString());
return params;
}
};
MyApplication.getInstance().addToRequestQueue(strReq);
}
答案 0 :(得分:0)
String mobile = profileObj.getString("mobile");
你可能没有String但是没有。
答案 1 :(得分:0)
你得到JSONException
。这可能是由于很多原因造成的,您可以在此处找到它们:http://developer.android.com/reference/org/json/JSONException.html
原因是,您使用的是StringRequest
。这意味着,response
是普通String
而非JSON
响应。只需打印reponse
,然后亲眼看看它不是有效的JSON
。您需要使用的是JSONRequest
,或者按原样处理String
响应,而不是json解析。
<强>更新强>
您的问题可能是由于以下两行中的任何一行,因为它们都可以抛出JSONException
:getJSONObject(),getString()
JSONObject profileObj = responseObj.getJSONObject(response);
String mobile = profileObj.getString("mobile");
您说您的JSON回复是{"msg":"verified","status":true}
。那么您如何尝试获取profileObj
或mobile
的值?如果找不到该键的值,它将抛出JSONException
。为避免这种情况,您需要检查密钥的值是否存在。在获取密钥之前,使用has(String key)确认密钥的映射。