从c#应用程序进行斜杠db rest api调用

时间:2014-07-24 16:27:37

标签: c# slashdb

我们已经将我们的sql server db暴露在slashdb(slashdb.com)后面。在他们的网站中,我们能够创建查询并从其生成的URL中获取数据。但不是来自外部,而是来自C#应用程序。

现在我们将在您的c#应用程序中使用这些URL并在我们的网页中显示数据。我知道如何在c#中进行基于休息的呼叫。但我仍然坚持使用来自我的c#的slashdb rest api调用发送身份验证信息。它抛出403 http错误。

请让我知道如何从c#应用程序调用斜杠db rest调用。

感谢。

1 个答案:

答案 0 :(得分:1)

HTTP 403确实表示缺少或不正确的凭据或用户未被授权表或查询资源的事实。

首先,确保您将用于向SlashDB发送请求的用户名已被分配了对查询的执行权限。为此,请转到Configuration-> Queries,然后打开查询定义。在Execute字段中输入用户名。您可以通过用逗号分隔多个用户名来指定它们。作为附注,用户公共不需要凭据,因此如果您的资源可以公开,只需将公共执行字段添加为公共。

对于非公共用户,您需要使用HTTP请求提供这些凭据。

SlashDB允许两种方式发送您的凭据:

  1. 使用BasicAuthentication的用户名/密码
  2. API密钥
  3. Ad.1 使用Authorization标头和用户名:密码的binhexed值构建您的HTTP请求。请参阅此Stackoverflow配方如何执行此操作:Calling a rest api with username and password - how to

    Ad.2 要使用API​​密钥,请首先为SlashDB用户分配密钥(字母数字字符串),然后向其提供您的请求。

    为此,请转到Configuration-> Users,然后打开用户的配置对话框。向下滚动到API身份验证部分的底部,然后将密钥粘贴到提供的字段中。有关灵感,请参阅http://randomkeygen.com/上的CodeIngniter或WEP256键。不要使用包含“:”的字符串,因为它用于将密钥拆分为app-key和api-key。现在只需用一把钥匙即可。

    将您的密钥作为标题或URL查询字符串发送。默认情况下,该参数称为“apikey”:

    选项1:标题

    (HttpWebRequest)WebRequest.Create(@"https://slashdb.yourdomain.com/db/Northwind/Customers/CustomerID/ALFKI.json");
    req.Headers.Add("apikey", "12345678");
    

    选项2:在网址

    (HttpWebRequest)WebRequest.Create(@"https://slashdb.yourdomain.com/db/Northwind/Customers/CustomerID/ALFKI.json?apikey=12345678");