tags:

views:

55

answers:

2

Hi, 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();

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

I am getting 400 - Bad request . Please help .

Thanks,

Subhen

+1  A: 

Although I'm not fully sure, but I think you're supposed to put multiple properties in a single instead of multiple elements.

Evert
Can you please explain in detail bit. I am completely new to this
Subhen
+1  A: 

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

Julian Reschke
If you canexplain in detail please? I am completely new to this
Subhen
Elements are defined by namespace name and local name; the prefix is a level of indirection and may vary. You probably should read an XML namespaces FAQ and have a closer look at the XML APIs you are using.
Julian Reschke