httpclient c#couchdb未授权创建数据库

时间:2018-06-01 02:33:36

标签: c# couchdb

我在代码下面有代码在couchDB中创建数据库:

private async void DatabaseCreate()
        {
            if (!await DatabaseExist())
            {
                var contents = new StringContent("", Encoding.UTF8, "text/plain"); 
                this.uri = "http://USER:PASSWORD@localhost:5984/item_sn";
                var response = await client.PutAsync(this.uri, contents); //set the contents to null but same response.
                Console.WriteLine(response.Content.ReadAsStrifngAsync().Result); 
            }
        }

我的问题是它给了我一个StatusCode:401的回复,说“未经授权”。我在终端尝试了 curl ,它给了我一个成功的回复。我需要为httpclient设置一些先决条件吗?或者我使用了错误的方法。我知道有一些针对couchDB的第三方软件包,但就我而言,我只想使用C#的httpclient。

提前致谢

curl命令:

curl -X PUT http://USER:PASSWORD@localhost:5984/item_sn

2 个答案:

答案 0 :(得分:0)

在HttpClient类中,您可以包含HttpClientHandler Class及其Credentials property的凭据。看一下这个answer。尝试一下,也许这会奏效。

答案 1 :(得分:0)

这是有效的代码。

public async void DatabaseCreate()
            {
                if (!await DatabaseExist())
                {
                    var contents = new StringContent("", Encoding.UTF8, "text/plain");
                    var byteArray = Encoding.ASCII.GetBytes("user:pass");
                    client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(byteArray));
                    this.uri = "http://localhost:5984/databasename";
                    var response = await client.PutAsync(this.uri, contents);
                    Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
                }
            }