使用Android Volley库和API
我是Android截击库的新手。我向API发送用户名和密码,API返回用户详细信息。这是我在android中的登录用户方法使用Android Volley库和API,android,json,api,android-volley,jsonobject,Android,Json,Api,Android Volley,Jsonobject,我是Android截击库的新手。我向API发送用户名和密码,API返回用户详细信息。这是我在android中的登录用户方法 public void LoginUser(){ // Tag used to cancel the request String tag_json_obj = "json_obj_req"; String url = "http://example.com/myfile/mobile_api/"; //final ProgressDi
public void LoginUser(){
// Tag used to cancel the request
String tag_json_obj = "json_obj_req";
String url = "http://example.com/myfile/mobile_api/";
//final ProgressDialog pDialog = ProgressDialog.show(getParent(), "Please wait", "Login user");
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
if(response.getString(KEY_SUCCESS)!=null){
String res = response.getString(KEY_SUCCESS);
if(Integer.parseInt(res) == 1){
JSONObject json_user = response.getJSONObject("user");
Toast.makeText(getApplicationContext(), "User Logged in.. " + json_user.getString("name"), Toast.LENGTH_LONG).show();
}
}
else if(response.getString(KEY_ERROR)!=null){
String res = response.getString(KEY_ERROR);
if(Integer.parseInt(res) == 1){
Toast.makeText(getApplicationContext(), response.getString("error_msg"), Toast.LENGTH_LONG).show();
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//pDialog.hide();
}
Log.d(TAG, response.toString());
//pDialog.hide();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Log.d(TAG, "Error: " + error.getMessage());
//pDialog.hide();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("tag", login_tag);
params.put("email", Email);
params.put("password", Pass);
return params;
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
}
但我从Json中得到以下错误
07-31 16:58:27.307:E/JSON解析器(7506):解析数据org.JSON.JSONException时出错:java.lang.String类型的值No无法转换为JSONObject
那么,这是使用截击连接移动API和Android应用程序的正确方法吗?或者有人能解释一下原因吗 嗯,我想我已经找到了问题所在。我得到这个错误消息是因为它返回一个字符串“Access Denied”,如果标记不正确,它会给出“Access Denied”消息。所以这不是一个json对象,它只是一个字符串。要解决此错误,可以使用字符串请求获取字符串值
StringRequest strReq = new StringRequest(Method.POST, //here change the method to POST
Const.URL_STRING_REQ, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
msgResponse.setText(response.toString());
hideProgressDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
hideProgressDialog();
}
}){
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("tag", login_tag);
params.put("email", Email);
params.put("password", Pass);
return params;
}
};
StringRequest strReq=new-StringRequest(Method.POST,//此处将方法更改为POST
Const.URL\u STRING\u REQ,新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
Log.d(TAG,response.toString());
msgressponse.setText(response.toString());
hideProgressDialog();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
d(标记“Error:+Error.getMessage());
hideProgressDialog();
}
}){
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
参数put(“标签”,登录标签);
参数put(“电子邮件”,电子邮件);
参数put(“密码”,Pass);
返回参数;
}
};
也发布您的json响应。实际上我没有收到任何响应。这就是问题所在。我收到了上面的错误消息。错误:org.json.JSONException:java.lang.String类型的值访问无法转换为JSONWell,我想我已经发现了问题。我得到这个错误消息是因为它返回一个字符串“Access Denied”,如果标记不正确,它会给出“Access Denied”消息。
StringRequest strReq = new StringRequest(Method.POST, //here change the method to POST
Const.URL_STRING_REQ, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
msgResponse.setText(response.toString());
hideProgressDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
hideProgressDialog();
}
}){
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("tag", login_tag);
params.put("email", Email);
params.put("password", Pass);
return params;
}
};