我在代码下面有代码在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
答案 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);
}
}