从owncloud获取文件列表

时间:2018-02-21 09:57:22

标签: c# asp.net webdav owncloud

我想在我的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协议,但也许我应该尝试其他任何东西?

1 个答案:

答案 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();
                }