2014-11-03 64 views

回答

0

您应该可以使用Docushare的HTML/XML API执行此操作。有关Docushare API的详细信息,您需要注册DocuShare Developer Network

一旦您知道Docushare希望您可以通过Windows应用商店的应用与HttpClient API连接。请参阅Connecting to an HTTP server using Windows.Web.Http.HttpClient (XAML)

+0

我注册并试图读出HTML/XML API文档,但是dindt完全得到它:\ 任何机会,你可以展示的一个例子登录或列表文件夹/文件? – Ric 2014-11-04 15:16:59

0

下面是简单的代码片段,可以很好地开始使用DocuShare。所有可能的请求都可以在文档中找到。

认证+获取属性集合-11的对象

protected const string UsernameFormFieldName = "username"; 
    protected const string PasswordFormFieldName = "password"; 
    protected const string DomainFormFieldName = "domain"; 

    const string CookieName = "AmberUser"; 
    const string baseAdress = "http://host:port"; 
    const string container = "/docushare"; 

    static Uri CookieUrl = new Uri(new Uri(baseAdress), container); 

    const string root = "/xcm/v1/shadow/xcmAPI/root"; 
    const string FolderInfoUri = "/xcm/v1/shadow/object/{0}/xcmAPI/properties"; 
    const string ObjectVersion = "/xcm/v1/shadow/object/{0}/xcmAPI/version"; 

    const string ObjectToTest = "Collection-11"; 

    const string suffix = "?properties=title,mimetype"; 

    static void Main(string[] args) 
    { 
     var token = Authenticate(); 
     var requestUri = string.Format(container + FolderInfoUri, ObjectToTest) + suffix; 
     var response = GetResult(token, requestUri); 
     var content = response.Content.ReadAsStringAsync().Result; 
    } 

    private static string Authenticate() 
    { 
     const string AuthenticationPath = container + "/dsweb/ApplyLogin"; 


     var form = new FormUrlEncodedContent(new[] 
     { 
      new KeyValuePair<string, string>(UsernameFormFieldName, "login"), 
      new KeyValuePair<string, string>(PasswordFormFieldName, "password"), 
      new KeyValuePair<string, string>(DomainFormFieldName, "domain"), 
     }); 

     string authToken = null; 

     Execute((client, handler) => 
     { 
      var task = client.PostAsync(AuthenticationPath, form, CancellationToken.None); 
      var response = task.Result; 
      var content = response.Content.ReadAsStringAsync().Result; 
      var cookie = handler.CookieContainer.GetCookies(CookieUrl); 
      authToken = cookie[CookieName].Value; 
     }); 

     return authToken; 
    } 

    private static void Execute(Action<HttpClient, HttpClientHandler> request) 
    { 
     using (var handler = new HttpClientHandler()) 
     using (var client = new HttpClient(handler)) 
     { 
      handler.UseCookies = true; 
      handler.CookieContainer = new CookieContainer(); 
      client.BaseAddress = new Uri(baseAdress); 

      request(client, handler); 
     } 
    } 

    private static HttpResponseMessage GetResult(string token, string uri) 
    { 
     HttpResponseMessage response = null; 

     Execute((client, handler) => 
     { 
      handler.CookieContainer.Add(
       CookieUrl, 
       new Cookie(CookieName, token)); 

      var responseTask = client.GetAsync(uri); 
      response = responseTask.Result; 
     }); 

     return response; 
    }