如何从 android 客户端调用 REST WCF 服务

Posted

技术标签:

【中文标题】如何从 android 客户端调用 REST WCF 服务【英文标题】:How to call REST WCF service from android client 【发布时间】:2016-03-07 07:37:03 【问题描述】:

我在一个项目中工作,我必须访问后端服务以从 android 客户端应用程序进行用户身份验证。因此,我创建了一个具有以下结构的 WCF REST 服务。

    //<summary>
    // Checks whether user is exists or not
    // </summary>
    // <param name="UserName"></param>
    // <param name="Password"></param>
    // <returns></returns>

    [OperationContract]
    [WebGet(UriTemplate = "IsUserExist/UserName/Password", ResponseFormat = WebMessageFormat.Json)]
    bool IsUserExist(string UserName, string Password);


    // <summary>
    // Log the time of specified user
    // </summary>
    // <param name="UserName"></param>
    [OperationContract]
    [WebGet(UriTemplate = "LogTime/username", ResponseFormat = WebMessageFormat.Json)]
    string LogTime(string UserName);

而且我已经成功地在 IIS 中部署了它。而且我可以轻松地从浏览器调用该服务来执行用户身份验证,效果很好。

http://localhost:9001/HNNDataSerivce/LogInService.svc/IsUserExist/Bob/pass123
http://localhost:9001/HNNDataSerivce/LogInService.svc/LogTime/Bob

并且此服务调用将所需的值分别返回为布尔值和字符串。

现在我想从 android 客户端进行相同的服务调用。为此,我创建了一个带有文本框和按钮的简单演示应用程序。用户在文本框中指定的用户名和密码以及当用户单击按钮时我要实现以下身份验证过程。

    public void LoginButtonClick(View v) 
    if(IsUserExist(UserName, Password))
        LogTime(UserName)
    else
    // show invalid user message


【问题讨论】:

研究 android 的改造 附带一个问题:为什么 Login 方法称为 IsUserExists? @cFrozenDeath 调用 IsUserExists 的原因是为了确保指定的用户是否存在于数据库中。如果存在,则调用 LogTime 函数记录日志的时间。 【参考方案1】:

这是一个简单的 REST 客户端库,您可以从 Android 调用它。包含一个 Android 示例。

https://github.com/MelbourneDeveloper/RestClient.Net

代码都是开源的,所以你可以在必要时获取你需要的部分。

编辑:repo 已从 Bitbucket 移至 Github

【讨论】:

我已经修复了链接

以上是关于如何从 android 客户端调用 REST WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

WCF 服务 - 使用 json 调用客户端访问 rest 未提供正确的内容类型

如何在android中执行并行REST API调用

从 REST 客户端调用 Worklight Javascript SQL 适配器

如何通过 Preflight Request 从 javascript 调用 REST Webservice?

从 Android 应用调用 REST 服务的 URL

gRPC 服务器如何调用 REST 端点