1

我需要在 BreezeSharp 中使用 EntityQuery 从我的 Breeze WebAPI 获取访问令牌

我有一个名为 TokenResponseModel 的类,用于从服务器反序列化我的 json,如下所示:

using Newtonsoft.Json;
namespace CMIS.Integration.Common
{
    class TokenResponseModel
    {
        [JsonProperty("access_token")]
        public string AccessToken { get; set; }

        [JsonProperty("token_type")]
        public string TokenType { get; set; }

        [JsonProperty("expires_in")]
        public int ExpiresIn { get; set; }

        [JsonProperty("userName")]
        public string Username { get; set; }

        [JsonProperty(".issued")]
        public string IssuedAt { get; set; }

        [JsonProperty(".expires")]
        public string ExpiresAt { get; set; }
    }
}

我有以下代码要运行:

EntityQuery query=EntityQuery.From("Token",new TokenResponseModel()).
WithParameters(new Dictionary<string,object>{{"grant_type","password"},{"username","my_username"},{"password","my_password"}});

EntityManager mng = new EntityManager(baseUrl);

var tokenobject = await query.Execute(mng);

当我运行它时,我得到一个错误。它需要服务器上的“/Token”方法不存在的元数据。

我如何用 BreezeSharp 调用它。

使用 RestSharp 我可以这样做:

RestRequest request = new RestRequest("/Token", Method.POST);

request.AddParameter("grant_type", "password");
request.AddParameter("username", "my_username");
request.AddParameter("password", "my_password");

RestClient client = new RestClient(baseUrl);
var response = client.Execute<AccessToken>(request);

这很好用。谢谢

更多解释:我想说的是,有时我只需要从微风服务器获取结果,只是 ia JSON 格式。我不希望它映射到客户端上的任何对象。一个很好的例子是我使用 Token 方法对用户进行身份验证的案例。我知道如何自己解析 JSON。我只想微风带来以下调用的结果:

string baseUrl = "http://myserver_url/NHIFService/";
EntityQuery query = EntityQuery.From<string>("Token").WithParameters(new new Dictionary<string, object> { { "grant_type", "password" }, { "username", "my_username" }, { "password", "my_password" } });

EntityManager mng = new EntityManager(baseUrl);
var tokenobject = await query.Execute(mng);

我希望能够做到这一点,因为有时我会从服务器返回在客户端或服务器上没有匹配的匿名对象。可以让我在不关心元数据的情况下做到这一点。或者我怎样才能抑制元数据获取。

谢谢你。

4

1 回答 1

3

在浏览了 BreezeSharp 源代码后,我得到了做我想做的事情的解决方案。IdeaBlade 的人创建了这个 DataService 类,它可以从服务器返回 RAW JSON,甚至不需要关心元数据。这是我的做法:

string token = await AuthenticationHelper.GetAccessToken();

string baseUrl = "http://my_server_url/appname/breeze/my_controller/";

DataService ds = new DataService(baseUrl);
string resourcePath = string.Format("GetCardDetails?CardNo={0}", cardNoTextEdit.EditValue);
ds.HttpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
string result=await ds.GetAsync(resourcePath);

祝贺你们 Breeze Sharp 很棒。

于 2014-06-13T09:05:15.920 回答