Я относительно новичок в 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);
Я пытался как получить и пост. ничего не изменилось, по-прежнему та же ошибка. Но вы правы в этой ошибке, я изменил ее, чтобы опубликовать сейчас, однако это не избавит от ошибки ... EDIT: я обновил код в вопросе, чтобы отразить это. – Slodin
Какие значения вы передали параметрам? –
имя пользователя и пароль. и они читают без проблем – Slodin