-
DAV
鎖定
- 中文名
- DAV
- 外文名
- DAV
- 性 質
- HTTP的擴展
- 操作條件
- 鎖定、查找、移動、創建、列舉
DAV操作條件
當然,它不可能像本地文件系統一樣隨心所欲,它支持的操作還是有限的,以下三條:
1. 支持鎖定,Client可以先Lock Server上的file,然後操作;
2. 查找、定位,即DASL協議,DAV的一個子協議;
3. 拷貝、移動、創建、列舉,:不知道為什麼叫做Namespace manipulation;
DAV協議打開
用FrontPage、Excess等打開、編輯遠程網站用的就是這個協議,它使得FrontPage可以編輯、覆蓋、刪除Server上的文件。
首先看看DASL協議是如何查找Server端的文件系統:
總原則:使用Request發送XML格式的查詢字符串(Request-URI),得到Response,包含查詢結果(也是XML格式);
Request-URL語法的一般形式:
<d:searchrequestxmlns:d="DAV:"> <d:basicsearch> <d:select> <d:prop><d:getcontentlength/></d:prop> </d:select> <d:from> <d:scope> <d:href>/container1/</d:href> <d:depth>infinity</d:depth> </d:scope> </d:from> <d:where> <d:gt> <d:prop><d:getcontentlength/></d:prop> <d:literal>10000</d:literal> </d:gt> </d:where> <d:orderby> <d:order> <d:prop><d:getcontentlength/></d:prop> <d:ascending/> </d:order> </d:orderby> </d:basicsearch> </d:searchrequest>
下面是獲取url下所有目錄、文件信息的C#代碼,目的就是組合一個 HTTP頭+Request-URL:
//url指定Server端的檢索目錄,我認為也可以通過Request-URL的DAV:where部分來定: HttpWebRequestRequest=(HttpWebRequest)HttpWebRequest.Create(url); Request.Headers.Add("Translate:f"); Request.Credentials=CredentialCache.DefaultCredentials; stringrequestString="<?xmlversion=\"1.0\"encoding=\"utf-8\"?>"+ "<a:propfindxmlns:a=\"DAV:\">"+ "<a:prop>"+ "<a:displayname/>"+ "<a:iscollection/>"+ "<a:getlastmodified/>"+ "</a:prop>"+ "</a:propfind>"; MessageBox.Show(requestString.ToString());//只是顯示一下Request-URL Request.Method="PROPFIND";//有GET、POST、PROPFIND..... if(deep==true)//設定服務器上的檢索深度 Request.Headers.Add("Depth:infinity"); else Request.Headers.Add("Depth:1"); Request.ContentLength=requestString.Length; Request.ContentType="text/xml"; StreamrequestStream=Request.GetRequestStream(); requestStream.Write(Encoding.ASCII.GetBytes(requestString),0,Encoding.ASCII.GetBytes(requestString).Length); requestStream.Close(); HttpWebResponseResponse; StreamReaderrespStream; try { Response=(HttpWebResponse)Request.GetResponse(); respStream=newStreamReader(Response.GetResponseStream()); } catch(WebExceptione) { ..... }
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:13次歷史版本
- 最近更新: wujinmiao123