当前位置: 首页 > 知识库问答 >
问题:

Android Loopj的异步JsonObject响应被强制转换为Objectid失败

夏华藏
2023-03-14

我对Android系统比较陌生

转换为ObjectId失败,因为路径为“login”,模型为“User”,名称为“CastError”,“stringValue”,“login”,“kind”,“ObjectId”,“value”,“login”,“path”:“\u id”}

我已经在邮递员上测试了我的Rest API,一切都恢复得很好。Restful API是用Node.js和Express编写的。

Rest应用编程接口应该返回一个状态、用户标识和消息,让应用程序知道用户是否使用了正确的用户名和密码登录。登录工作正常,它会返回200,允许应用程序登录并使用会话保持登录状态。但是,我无法从响应JsonObject中获取用户标识,以便下一步显示用户信息。

(针对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(仅登录部分)

public void checkLoginDB(final RequestParams params, final String username){
        prgDialog.show();     

        RestClient.post("user/login", params, new JsonHttpResponseHandler(){
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                Log.d("StatusCode: ", "Code "+ statusCode);
                try {
                    if (statusCode == 200) {
                        Toast.makeText(getApplicationContext(), "Logged In!", Toast.LENGTH_LONG).show();
                        session.createLoginSession(username);
                        Log.d("Log: ", "what " + response);
                        navigatetoHomeActivity();
                    }
                } catch (Exception e){
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                Log.d("StatusCode: ", "Code "+ statusCode);
                prgDialog.hide();
                Toast.makeText(getApplicationContext(), "Failed!", Toast.LENGTH_LONG).show();
            }
        });
    }

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(定义模式)

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);

共有1个答案

姬振濂
2023-03-14

无论何时,只要您想登录用户,并希望返回用户详细信息,请使用post()方法。在代码中,第二种方法不是post,所以更改client。get()客户端。post()

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

 类似资料:
  • 问题内容: 我试图在猫鼬中指定我的数据库的架构。目前,我这样做: 我创建模式并尝试保存一些数据。 错误: 我根据以下代码编写了此代码:http : //mongoosejs.com/docs/populate.html#gsc.tab=0 我怎样才能解决这个问题? 问题答案: 您引用的猫鼬文档中的示例用于该字段以及其他字段。 我假设他们在示例中这样做是为了证明可以使用其中任何一个。如果未在架构中指

  • 我通过扩展改型回调生成了类。我想将响应解析为字符串。在我的例子中,每个响应都得到这种类型的JSON对象。在成功回应的情况下: 万一发生故障响应 如何将响应体转换为JsonObject,以便检查字段“success”:并在成功时导航各自方法--onResponseSuccess(Call Call,response response);在失败时导航onResponseFailure(Call Cal

  • 问题内容: 我是Java的新手,正在尝试理解为什么第一个代码片段不会导致此异常,而第二个代码片段会导致此异常。由于在两种情况下都将字符串数组传递到Arrays.asList中,所以两个代码片段都不应该产生异常还是不产生异常? 第一个代码段(毫无例外): 第二段(导致上述异常): 如果相关,我正在Eclipse Helios中使用JavaSE 1.6。 问题答案: 对我来说(使用Java 1.6.0

  • 前言:我对猫鼬/Express的工作相对来说是新手。 我试图制作一个应用程序,其中一个名为“space”的猫鼬模式中有一个名为“posts”的数组。数组的内容是对另一个名为“POST”的猫鼬模式的ObjectId引用。然而,每次我对应该发送回我的空间和其中的帖子的路线提出GET请求时,我都会得到一个严重的错误。此外,我的帖子没有填充我的空间。 错误:CastError:对于模型“space”的路径

  • 我一直从这段代码中得到这个错误,不知道为什么{“error:CastError:Cast to ObjectId对于模型\“Order\”的路径\“u id\”处的值\“confirmed\”失败 正如您所看到的,我甚至没有在这个查询中使用objectID。。。我不知道它为什么要退回这个

  • Deal和DealDocument类是相同的。Deal document类如下所示: 你觉得问题可能是什么?它似乎是随机出现的,好像它工作正常,但在时间内系统退化 *更新*:这是我如何配置模型映射器的:ModelMapper.GetConfiguration().SetAmbiguity忽略(false).SetFieldMatchingEnabled(true).SetMatchingStrat