Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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 登录成功时返回id的登录RESTFUL api_Java_Android_Api_Login_Restful Authentication - Fatal编程技术网

Java 登录成功时返回id的登录RESTFUL api

Java 登录成功时返回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

我制作了一个登录api,当我在android应用程序中传递用户名和密码时,它将返回一个id

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”正如我在回答中提到的,如果有效,请将其标记为正确,并对答案进行投票