AutoCAD WS APIs – C# Client[教程]
(2011-06-23 10:51:39)
标签:
autocadwsapicclientit |
分类: 教程 |
Webdav客户端
本教程旨在为您示范如何用WebdavClient C#语言类对AutoCAD WS账户中的文件和文件夹执行各种操作。
使用这个C#语言类,您可以——
-
-
-
-
-
-
WebdavClient类使用WebDAV协议来和AutoCAD WS服务进行通信。WebdavClient C#语言类依靠标准的WebDAV协议来和AutoCAD WS服务进行通信。C++、C#、Java和JavaScript等多种编程语言都支持这个基于http的行业协议。点击这里观看使用JavaScript访问AutoCAD WS的教程。
构造器
WeddavClient类构造器需要三个参数:
1.
2.
3.
下面的代码创建出新的WebdavClient类,连接到AutoCAD WS Webdav服务器,使用的用户名是“someuser”,密码是“123456”。
WebDAVClient client = new WebdavClient("https://dav.autocadws.com", "someuser", "123456");
PROPFIND
PROPFIND方法用来在AutoCAD WS账户中检索关于文件和文件夹的信息。
PROPFIND函数接收两个参数:
1.
2.
另外,记住要订阅PropfindComplete事件的回调函数。
下列代码向服务器发送PROPFIND请求,以获取直接位于‘/Site’文件夹下的所有文件/文件夹的信息。
//subscribe to the PropfindComplete event
client.PropfindComplete += new PropfindCompleteDel(PropfindResponse);
// request properties of all files/folders residing directly under the 'Site' folder.
client.Propfind('/Site', 1);
在这个示例中,我们订阅了PropfindComplete事件的PropfindResponse函数。
当PROPFIND完成之后,WebdavClient就会呼叫PropfindResponse。这个函数必须有如下签名:
//responseStr is the full XML returned by the server.
//WebdavItemInfo holds partial information about each file/folder retrieved, such as its name,
//relative path and whether it is a folder or a file.
public void PropfindResponse(String folderHref, bool requestSuccessfull, int statusCode,
我们将会展示PropfindResponse函数的实施,它会将检索到主控台的所有项的名称打印出来。我们可以从WebdavItemInfo对象获取这些名称,但是为了展示如何解析这个XML,我们将会从完整的应答XML获取这些信息。
了解PropfindResponse函数的实施之前,我们应该看看来自Webdav服务器的响应。服务器返回一个含有文件/文件夹信息的XML。下面是这种XML的一个示例:
<?xml version="1.0" encoding="utf-8" ?>
<d:multistatus xmlns:D="DAV:">
</d:multistatus>
如您所见,每个文件/文件夹均返回到“d:response”标签中。在这种情况下,服务器返回“filea.dwg”和“fileb.dwg”这两个文件的信息。服务器注明了每个文件的创建日期和文件名。
下面的代码展示的是PropfindHandler函数的实施:
public void PropfindResponse(String folderHref, bool requestSuccessfull, int statusCode,
{
}
如果以“someuser”为用户名的账户中包含文件夹“site”,而文件夹中有“filea.dwg”和“fileb.dwg”这两个文件,那么用户会看到这些文件名打印到主控台上:
filea.dwg
fileb.dwg
复制,移动,删除,上传
复制、移动和删除的调用方式和PROPFIND方法一样,只是传递的参数有所不同。
切记,您必须要订阅相应事件(DeleteComplete、CopyComplete、MoveComplete、 UploadComplete)的回调函数。这些事件中没有响应可解析,但是用了回调函数之后,您就会在操作完成的时候得到通知,并获知操作是否成功。
下列代码:
1.
2.
3.
4.
//subscribe to theDeleteComplete , CopyComplete
client.DeleteComplete -= new DeleteCompleteDel(FSOpFinished);
client.CopyComplete -= new CopyCompleteDel(FSOpFinished);
client.MoveComplete -= new MoveCompleteDel(FSOpFinished);
client.UploadComplete -= new UploadCompleteDel(FSOpFinished);
var overwrite = true;
client.Copy("/Site/filea.dwg", "/OtherSite/fileb.dwg", overwrite);
client.Move( "/Site/filec.dwg", "/OtherSite/filed.dwg'" overwrite);
client.Delete("/Site/filee.dwg");
client.Upload("c:/fileg.dwg", "Site/fileg.dwg");
下列代码显示了FSOpFinished函数,这个函数会在成功完成请求的时候将成功信息‘success’打印到主控台,并在出错的时候将出错信息‘error’连同状态代码打印到主控台:
public void FSOpFinished(bool requestSuccessfull, int statusCode, String responseStr)
{
}
在AutoCAD WS中打开图纸文件
要打开图纸文件,只需调用客户端的OpenDrawing方法,以传递图纸文件的路径:
client.OpenDrawing("/Site/filea.dwg");