httpclient c#couchdb未经授权创建数据库
我有下面的代码在couchDB中创建数据库的代码:httpclient c#couchdb未经授权创建数据库,c#,couchdb,C#,Couchdb,我有下面的代码在couchDB中创建数据库的代码: private async void DatabaseCreate() { if (!await DatabaseExist()) { var contents = new StringContent("", Encoding.UTF8, "text/plain"); this.uri = "http://USER:
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);
}
}
我的问题是,它给了我一个状态码为401的回复,表示“未经授权”。我尝试了卷曲在终端中旋转它,它给了我一个成功的响应。是否需要为httpclient设置一些先决条件?还是我用错了方法。我知道couchDB有一些第三方软件包,但就我而言,我只想使用C#的httpclient
提前谢谢
curl命令:
curl -X PUT http://USER:PASSWORD@localhost:5984/item_sn
看起来在HttpClient类中,您可以将凭据包含在其中。看看这个。试试看,也许那会管用。以下是有效的代码
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);
}
}
你能提供你的
curl
命令吗?将我的curl命令添加到原始帖子中。干杯。如果您执行GetAsync(“http://localhost:5984/“”
操作,您会收到CouchDB欢迎信息吗?欢迎消息应该是这样的:{“couchdb”:“欢迎”,“版本”:“2.1.1”,“功能”:[“调度程序”],“供应商”:{“名称”:“Apache软件基金会”}}
是。GetAsync(uri)给了我couchdb一个受欢迎的响应。只需补充一点,在现有数据库中使用PutAsync(uri,contents)和PostAsync(uri,contents)操作添加/修改文档没有问题。我的问题只是在couchdb上创建新数据库时。CouchDB版本是2.1.1,如果有帮助的话。您的用户名/密码是CouchDB级别还是数据库级别?var byteArray=Encoding.ASCII.GetBytes(“用户:通过”);client.DefaultRequestHeaders.Add(“Authorization”,“Basic”+Convert.ToBase64String(byteArray))代码>发送请求前添加代码行有效。谢谢你的指导,伙计。谢谢。干杯