使用BreezeSharp获取访问令牌

使用BreezeSharp获取访问令牌,breeze,breeze-sharp,Breeze,Breeze Sharp,我需要在BreezeSharp中使用EntityQuery从我的BreezeWebAPI获取访问令牌 我有一个名为TokenResponseModel的类,用于从服务器反序列化json,如下所示: using Newtonsoft.Json; namespace CMIS.Integration.Common { class TokenResponseModel { [JsonProperty("access_token")] public str

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

我有一个名为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; }
    }
}
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);
我要运行以下代码:

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);
EntityQuery query=EntityQuery.From(“Token”,new-TokenResponseModel())。
带参数(新字典{“授权类型”、“密码”}、{“用户名”、“我的用户名”}、{“密码”、“我的密码”});
EntityManager mng=新的EntityManager(baseUrl);
var tokenobject=wait query.Execute(mng);
当我运行它时,我得到一个错误。它需要服务器上“/Token”方法没有的元数据

我怎么能称之为BreezeSharp

使用RestSharp,我可以按如下方式完成:

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; }
    }
}
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);
RestRequest请求=新的RestRequest(“/Token”,Method.POST);
AddParameter(“授权类型”、“密码”);
AddParameter(“用户名”、“我的用户名”);
AddParameter(“密码”、“我的密码”);
RestClient=newrestclient(baseUrl);
var response=client.Execute(请求);
这个很好用。 谢谢

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

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);
string baseUrl=”http://myserver_url/NHIFService/";
EntityQuery query=EntityQuery.From(“令牌”)。带有参数(新字典{{“授权类型”、“密码”}、{“用户名”、“我的用户名”}、{“密码”、“我的密码”});
EntityManager mng=新的EntityManager(baseUrl);
var tokenobject=wait query.Execute(mng);
我希望能够做到这一点,因为有时我会从服务器返回在客户端或服务器上不匹配的匿名对象。 breese sharp可以允许我在不关心元数据的情况下执行此操作吗。或者如何抑制元数据获取


谢谢。

在阅读了BreezeSharp的源代码之后,我找到了实现我所希望的解决方案。IdeaBrade的人员创建了这个DataService类,它可以从服务器返回原始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真是太棒了。

我无法从你的问题中判断你的TokenResponseModel类是客户端还是服务器端。在这两种情况下,您也可以发布其他模型。