从 WebDav 服务器获取 400 错误请求 [英] Getting 400 Bad request from WebDav Server

查看:34
本文介绍了从 WebDav 服务器获取 400 错误请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对 WebDav 服务器有以下 PROFIND 方法/请求:

I have the following PROFIND method/request to WebDav server :

 strQuery = "<?xml version=\"1.0\"?><a:propfind xmlns:a=\"DAV:\">";
                strQuery += "<a:prop><a:getcontenttype/></a:prop>";
                strQuery += "<a:prop><a:getcontentlength/></a:prop>";
                strQuery += "</a:propfind>";

                // Create a new CredentialCache object and fill it with the network
                // credentials required to access the server.
                MyCredentialCache = new System.Net.CredentialCache();
                MyCredentialCache.Add(new System.Uri(strRootURI), "Basic", new System.Net.NetworkCredential(strUserName, strPassword));//, strDomain)

                // Create the HttpWebRequest object.
                Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI);
                Request.Proxy = GlobalProxySelection.GetEmptyWebProxy();

                // Add the network credentials to the request.
                Request.Credentials = MyCredentialCache;

                // Specify the method.
                Request.Method = "PROPFIND";

                // Encode the body using UTF-8.
                bytes = Encoding.UTF8.GetBytes((string)strQuery);

                // Set the content header length.  This must be
                // done before writing data to the request stream.
                Request.ContentLength = bytes.Length;

                // Get a reference to the request stream.
                RequestStream = Request.GetRequestStream();

                // Write the SQL query to the request stream.
                RequestStream.Write(bytes, 0, bytes.Length);

                // Close the Stream object to release the connection
                // for further use.
                RequestStream.Close();

                // Set the content type header.
                Request.ContentType = "text/xml";

                // Send the SEARCH method request and get the
                // response from the server.
                Response = (HttpWebResponse)Request.GetResponse();

                // Get the XML response stream.
                ResponseStream = Response.GetResponseStream();

                // Create the XmlTextReader object from the XML
                // response stream.
                XmlReader = new XmlTextReader(ResponseStream);

                // Read through the XML response, node by node.
                while (XmlReader.Read())
                {
                    // Look for the opening DAV:href node.  The DAV: namespace is
                    //typically assigned the a: prefix in the XML response body.
                    if (XmlReader.Name == "a:href")
                    {
                        // Advance the reader to the text node.
                        XmlReader.Read();

                        // Display the value of the DAV:href text node.
                        Console.WriteLine("Value: " + XmlReader.Value);
                        Console.WriteLine("");

                        //Advance the reader to the closing DAV:href node.
                        XmlReader.Read();
                    }
                }

                // Clean up.
                XmlReader.Close();
                ResponseStream.Close();
                Response.Close();

我从 MSDN 获取的查询.我是不是在 strQuery 部分或其他地方做错了什么?

The Query I have taken from MSDN . Am I doing something wrong in the strQuery section or somewhere else?

我收到 400 - Bad request .请帮忙.

谢谢,

苏珊

推荐答案

此外,依赖前缀名称而不是命名空间名称的代码不太可能与其他服务器一起使用...

Also, code that relies on prefix names instead of namespace names is unlikely to work with other servers...

这篇关于从 WebDav 服务器获取 400 错误请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆