Tutorial :Getting 400 Bad request from WebDav Server



Question:

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


Solution:1

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


Solution:2

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


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »