2017-01-31 2 views
0

Я относительно новичок в Android & Упрощенное программирование API, поэтому я мог бы совершать какие-то глупые ошибки. Однако я столкнулся это от моего ответа JSONObject:Android Loopj's Async JsonObject отвечает на Objectid не удалось

Cast для ObjectId Сбой значения \ «Логин \» на пути \ «_ идентификатор \» для модели \ «Пользователь \»»,„имя“:„CastError“ "stringValue": "\" логин \ "", "вид": "ObjectId", "значение": "логин", "путь": "_ ид"}

Я проверил мой Rest API на Postman и все вернулось. Прекрасный API написан в Node.js и Express.

API-интерфейс Rest API должен возвращать статус, идентификатор пользователя и сообщение, чтобы сообщить о том, что пользователь вошел в систему, используя право имя пользователя и пароль. d он возвращает мне 200, что позволяет приложению входить в систему и поддерживать его во время сеанса. Тем не менее, я не могу получить что-либо из ответа JsonObject, чтобы получить идентификатор пользователя для моего следующего шага при отображении пользовательской информации.

(Target Android API 23)

Код:

Restful.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; 
    } 
} 

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

ответ

0

Всякий раз, когда вы хотите Вход пользователя и хотите пользовательские данные в обратном использовании пост() метод. в вашем коде второй метод не пост, поэтому изменить client.get() к client.post()

как этот public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler){ client.post(getAbsoluteUrl(url), params, responseHandler); }

+0

Я пытался как получить и пост. ничего не изменилось, по-прежнему та же ошибка. Но вы правы в этой ошибке, я изменил ее, чтобы опубликовать сейчас, однако это не избавит от ошибки ... EDIT: я обновил код в вопросе, чтобы отразить это. – Slodin

+0

Какие значения вы передали параметрам? –

+0

имя пользователя и пароль. и они читают без проблем – Slodin

Смежные вопросы