使用HttpStatusCode 207多状态

时间:2014-12-31 16:26:10

标签: c# webdav httpwebresponse

我正在做一些WebDAV,在我的PROPFIND调用后我做了类似的事情

var content = Encoding.UTF8.GetBytes(propfind.ToString());
httpWebRequest.ContentLength = content.Length;
httpWebRequest.ContentType = "text/xml";

// Get a reference to the request stream.
var requestStream = httpWebRequest.GetRequestStream();
requestStream.Write(content, 0, content.Length);
requestStream.Close();

using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse())
{
    return response.StatusCode;
}

所以我得到了回来,这是一个207.据我所知,207是一个积极的事情,但我想正确检查并更智能地处理错误。

有谁可以告诉我如何更好地审问HttpWebResponse以确认我的PROPFIND是否成功?

1 个答案:

答案 0 :(得分:1)

您需要阅读响应正文(使用response.GetResponseStream())并解析XML,其中包含响应代码。

XML看起来像这样:

<?xml version="1.0"?>
<a:multistatus
  xmlns:b="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"
  xmlns:a="DAV:">
 <a:response>
   <a:href>http://server/public/test2/item1.txt</a:href>
   <a:propstat>
    <a:status>HTTP/1.1 200 OK</a:status>
       <a:prop>
        <a:getcontenttype>text/plain</a:getcontenttype>
        <a:getcontentlength b:dt="int">33</a:getcontentlength>
       </a:prop>
   </a:propstat>
 </a:response>
</a:multistatus>

(根据this page