我想在我的ASP网站上从owncloud获取文件列表。我成功使用了
来自linux的curl -X PROPFIND -u user:password "http://yourserver.com/owncloud/remote.php/webdav/"
但我无法使用带有propfind类型的默认http请求获得相同的结果,以便在c#https://user:password@host/owncloud/remote.php/webdav
中使用它。根据我的要求,我得到了400个代码。我也尝试了nuget的webdavclient,但收到的方法不允许异常。
IClient c = new Client(new NetworkCredential { UserName = "user", Password = "password" });
var client = new WebDAVClient.Client(new NetworkCredential());
c.Server = "xxx.com/owncloud/remote.php/webdav/";
var isfolderCreated = c.CreateDir("/", "lalala").Result;
有人能告诉我如何向owncloud发送http请求以获取文件列表吗?我尝试过客户端使用的webdav协议,但也许我应该尝试其他任何东西?
答案 0 :(得分:0)
我发现这个问题阻止了我。我只是没有在http请求中正确使用基本授权。由于我添加了正确的凭据,我可以发送http请求并获得响应。这是我在c#中使用的代码:
var request = (HttpWebRequest)WebRequest.Create("xxx.com/owncloud/remote.php/webdav/");
request.Credentials = new NetworkCredential("user", "password");
request.PreAuthenticate = true;
request.Method = @"PROPFIND";
request.Headers.Add(@"Translate", "F");
var httpGetResponse = (HttpWebResponse)request.GetResponse();
using (var responseStream = httpGetResponse.GetResponseStream())
{
long responseLength = httpGetResponse.ContentLength;
using (var streamReader = new StreamReader(responseStream, Encoding.UTF8))
{
var files = XElement.Parse(streamReader.ReadToEnd());
streamReader.Close();
}
responseStream.Close();
}