【问题标题】:How can I read plain text from MS Project Rest api using C#?如何使用 C# 从 MS Project Rest api 读取纯文本?
【发布时间】:2020-06-10 08:40:56
【问题描述】:

我想使用 Rest API 查询 Project 2013 中的项目数。

我可以在 Atom10FeedFormatter 类的帮助下读取它发回的 Atom XML 文件,但我不知道 如果是纯文本格式,如何处理响应。

这个请求:

http://{my_pwa_site}/_api/ProjectData/Projects/$count

在 html 正文中返回响应“15”,显示我在 Project 2013 中拥有的项目数量。

此外,访问此站点需要网络凭据。我通常使用以下代码:

Atom10FeedFormatter formatter = new Atom10FeedFormatter();

        XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";

        XmlUrlResolver res = new XmlUrlResolver();
        res.Credentials = new NetworkCredential("myusername", "mypassword");

        XmlReaderSettings set = new XmlReaderSettings();
        set.XmlResolver = res;



        using (XmlReader reader = XmlReader.Create("http://{mypwasite}/_api/ProjectData/Projects", set))
        {
            formatter.ReadFrom(reader);
        }

但我不能为此目的使用 XML 阅读器。

我应该用什么来阅读这个纯文本内容?

【问题讨论】:

    标签: c# rest sharepoint odata ms-project-server-2013


    【解决方案1】:

    不需要特殊的库,这与 OData 提要无关。要处理这种数据,使用 httpclient 而不是像普通的 rest api 案例那样的 xml reader 就足够了。以下是如何执行此操作的示例:

            var credentials = new NetworkCredential("myusername", "mypass");
            var handler = new HttpClientHandler { Credentials = credentials };
    
            string result="";
    
            string path = "http://{mypwasite}/_api/ProjectData/Projects";
    
    
            using (var _client = new HttpClient(handler))
            {
                HttpResponseMessage response = await _client.GetAsync(path);
    
                if (response.IsSuccessStatusCode)
                {
                    result = await response.Content.ReadAsStringAsync(); ;   
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2014-05-05
      • 2016-01-12
      • 2012-01-05
      • 1970-01-01
      • 2021-06-20
      • 2013-01-21
      • 2021-08-21
      • 2021-08-13
      • 2016-07-07
      相关资源
      最近更新 更多