我试图通过阅读本文来实现odata服务的客户端
我的挑战:
按照文章中的步骤,我想到了
1)(ProductClient).odata.config未自动生成 - 我们可以创建一个
2)需要凭据才能访问端点的客户端(在我的情况下,它是基本的身份验证)
3)最重要的是 - 找不到有关stackoverflow的相关文章:)
已经为我这样的新手发布了以下解决方案!
答案 0 :(得分:4)
解决方案
为了达到与文章中所提到的相似的东西(即)
通过需要身份验证的Odata端点访问强类型的Odata实体 -
static void ReadingODataEndPointByPassingMyBasicAuthCreds() {
// e.g. URL = http://localhost/myApi/odata
var url = ConfigurationManager.AppSettings["MyAPIBaseUrl"];
var container = new MyApi.Container(new Uri(url));
container.SendingRequest2 += SendBaseAuthCredsOnTheRequest;
foreach(var myEntity in container.MyEntities) {
Console.WriteLine(myEntity.Name);
Console.Write(string.Format("Description: {0}", myEntity.Description));
}
Console.Read();
}
private static void SendBaseAuthCredsOnTheRequest(object sender,
System.Data.Services.Client.SendingRequest2EventArgs e) {
var authHeaderValue = Convert.ToBase64String(Encoding.ASCII.GetBytes(String.Format("{0}:{1}", ConfigurationManager.AppSettings["username"]
, ConfigurationManager.AppSettings["password"])));
//this is where you pass the creds.
e.RequestMessage.SetHeader("Authorization", "Basic " + authHeaderValue);
}