Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓Loopj';s异步JsonObject响应被强制转换为Objectid失败_Java_Android_Json_Rest_Loopj - Fatal编程技术网

Java 安卓Loopj';s异步JsonObject响应被强制转换为Objectid失败

Java 安卓Loopj';s异步JsonObject响应被强制转换为Objectid失败,java,android,json,rest,loopj,Java,Android,Json,Rest,Loopj,我对Android和restfulapi编程比较陌生,所以我可能犯了一些愚蠢的错误。然而,我在回答JsonObject时面临着这个问题: 对于模型“用户”的路径“用户id”处的值“登录”,转换为ObjectId失败,“名称”:“CastError”,“stringValue”:“登录”,“种类”:“ObjectId”,“值”:“登录”,“路径”:“用户id”} 我已经在Postman上测试了我的RESTAPI,一切都很好。Restful API是用Node.js和Express编写的 Rest

我对Android和restfulapi编程比较陌生,所以我可能犯了一些愚蠢的错误。然而,我在回答JsonObject时面临着这个问题:

对于模型“用户”的路径“用户id”处的值“登录”,转换为ObjectId失败,“名称”:“CastError”,“stringValue”:“登录”,“种类”:“ObjectId”,“值”:“登录”,“路径”:“用户id”}

我已经在Postman上测试了我的RESTAPI,一切都很好。Restful API是用Node.js和Express编写的

Rest API应该返回一个状态、用户ID和消息,让应用程序知道用户是否使用正确的用户名和密码登录。登录正常,它返回200,允许应用程序登录并使用会话保持登录。但是,我无法从响应JsonObject获得任何信息来获取我的nex的用户IDt逐步显示用户信息

(目标Android API 23)

代码:

Java

public class RestClient {

    private static final String BASE_URL = "http://10.0.2.2:8000/api/";
    private static AsyncHttpClient client = new AsyncHttpClient();

    public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler){
        client.get(getAbsoluteUrl(url), params, responseHandler);
    }

    public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler){
        client.post(getAbsoluteUrl(url), params, responseHandler);
    }

    private static String getAbsoluteUrl(String relativeUrl){
        Log.d("URL: ", BASE_URL+relativeUrl);
        return BASE_URL + relativeUrl;
    }
}
Java(仅登录部分)

Restful API的Server.js

  router.post('/user/login', function(req, res){
    var username = req.body.username;
    var password = req.body.password;
    if(username.length > 0 && password.length > 3){
      User.findOne({username: username, password: password}, function(err, user){
        if(err)
          res.json({statusCode: 0, message: "login error: " + err});
        if(!user)
          res.json({statusCode: 0, message: "Not Found"});

        res.json({statusCode: 200, userid: user._id, message: "Login Sucessful"});
      })
    } else {
      res.json({statusCode: 0, message: "Invalid Fields"});
    }
  });

  app.use('/api', router)
User.js(定义的模式)


每当您想登录用户并希望返回用户详细信息时,请使用post()方法。 在代码中,第二种方法不是post,因此将
client.get()
更改为
client.post()

类似于
publicstaticvoidpost(字符串url、RequestParams-params、AsyncHttpResponseHandler-responseHandler){
client.post(getAbsoluteUrl(url)、params、responseHandler);

}

我尝试了get和post。没有任何更改,仍然是同一个错误。但你说得对,我现在将其更改为post,但这并没有消除错误…编辑:我更新了问题中的代码,以反映你传递给参数的值是什么?这是我自己的代码,我可以尝试一下。
public voidgetLogin(字符串用户名,字符串密码,JsonHttpResponseHandler处理程序){HashMap params=new HashMap();params.put(“email”,username.toString());params.put(“password”,password.toString());RequestParams param=new RequestParams(params);String url=getapirl(“/login”);client.post(url,param,handler);}
OMG…我刚得到一个响应…这是因为仿真器被窃听了!我讨厌android的唯一原因…你的答案是正确的!所有这些都是因为我在键入get和post时忽略了自动填充!EDIT:每次我测试一个新版本时,我都必须重新启动仿真器。显然,如果我不这样做,仿真器就会出问题
  router.post('/user/login', function(req, res){
    var username = req.body.username;
    var password = req.body.password;
    if(username.length > 0 && password.length > 3){
      User.findOne({username: username, password: password}, function(err, user){
        if(err)
          res.json({statusCode: 0, message: "login error: " + err});
        if(!user)
          res.json({statusCode: 0, message: "Not Found"});

        res.json({statusCode: 200, userid: user._id, message: "Login Sucessful"});
      })
    } else {
      res.json({statusCode: 0, message: "Invalid Fields"});
    }
  });

  app.use('/api', router)
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var UserSchema = new Schema({
  username: String,
  password: String,
  firstname: String,
  lastname: String,
  agentID: Number,
  email: String,
  phone: Number
});

module.exports = mongoose.model('User', UserSchema);