【问题标题】:How to pass authentication header (basic) to OData Service from a .NetClient如何将身份验证标头(基本)从 .NetClient 传递给 OData 服务
【发布时间】:2015-04-07 23:09:18
【问题描述】:

我试图按照这篇文章为 odata 服务实现客户端

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-client-app

我遇到的挑战:

按照文章中的步骤,我认为

1) (ProductClient).odata.config 不是自动生成的 - 我们可以创建一个

2) 需要凭据才能访问端点的客户端(在我的情况下,它是基本身份验证)

3) 最重要的是 - 也找不到关于 stackoverflow 的相关文章 :)

已经为像我这样的新手发布了下面的解决方案!

【问题讨论】:

    标签: asp.net c#-4.0 odata asp.net-web-api2


    【解决方案1】:

    解决方案

    为了达到类似于文章中提到的东西(即)

    通过需要身份验证的 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); 
    
     }
    

    【讨论】:

    • 我可以在 JAVA OData 客户端 3.8 上获得帮助
    • @RanjithKumarRagavan 我不确定我能提供什么帮助。但这里有一个链接,我认为odata.org/libraries 可能有用,其中包含 Java、.net 和其他客户端脚本库以使用 odata 端点。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2012-09-22
    相关资源
    最近更新 更多