Java 登录成功时返回id的登录RESTFUL api
我制作了一个登录api,当我在android应用程序中传递用户名和密码时,它将返回一个idJava 登录成功时返回id的登录RESTFUL api,java,android,api,login,restful-authentication,Java,Android,Api,Login,Restful Authentication,我制作了一个登录api,当我在android应用程序中传递用户名和密码时,它将返回一个id public class LoginApiBody { public string UserName { get; set; } public string Password { get; set; } } 说链接是。 当前链接显示: { "message": "The request is invalid.", "messageDetail": "The parame
public class LoginApiBody
{
public string UserName { get; set; }
public string Password { get; set; }
}
说链接是。
当前链接显示:
{
"message": "The request is invalid.",
"messageDetail": "The parameters dictionary contains a null entry for parameter 'Id' of non-nullable type 'System.Int32' for method System.Net.Http.HttpResponseMessage Get(Int32)' in 'KnwPortal.Controllers.UsersAPIController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
我必须用POST方法将“用户名”和“密码”传递给服务器。我的问题是我应该以何种格式发送/传递用户名和密码?无论是在JSONObject中还是在其他内容中?他如何验证传递的用户名和密码是否在服务器上?
我试过这个,但没有成功
Ion.with(User_Activity.this)
.load("http://abcd.org/efg/login")
.setBodyParameter("UsserName",user)
.setBodyParameter("Password",pass)
.asString()
.setCallback(new FutureCallback() {
@Override
public void onCompleted(Exception e, Object result) {
//on complete
}
});
或者我的loginapi有问题?如果您想使用ion发布数据,请使用此选项。github官方文档没有提到在load中使用“POST”。当我第一次使用它的时候,我被震撼了好几天 注意:我在离子库代码中发现了以下问题。更新它将以API返回的字符串形式为您提供结果。如果您的API返回JSONObject,请尝试使用
.asJSONObect()
而不是.asString()
。您还必须适当地更改回调方法
如果出现任何错误,我很乐意帮忙
Ion.with(User_Activity.this)
.load("POST","http://abcd.org/efg/login")
.setBodyParameter("UsserName",user)
.setBodyParameter("Password",pass)
.asString()
.setCallback(new FutureCallback() {
@Override
public void onCompleted(Exception e, Object result) {
//on complete
}
});
您还需要为您的API提供一个端点,这是我在您的问题中找不到的
离子库将以url编码方法对数据进行编码。你不需要再加上这个。它是必须在ion中设置的服务器响应方法。我已经告诉过你怎么做了。由于我无法看到api的返回数据和端点,如果api中有任何问题,我将无法帮助您。如果API代码不起作用,请添加它。我的API代码如下:[HttpPost]公共HttpResponseMessage登录([FromBody]LoginApobody登录){bool success=WebSecurity.Login(Login.UserName,Login.Password,false);if(success){var UserID=GetUserID_By_UserName(login.UserName);return Request.CreateResponse(HttpStatusCode.OK,UserID);}否则{return Request.CreateResponse(HttpStatusCode.OK,“0”);}尝试添加“POST”正如我在回答中提到的,如果有效,请将其标记为正确,并对答案进行投票