首页 > 解决方案 > 从执行具体目标版本查询的 HP ALM 获取需求

问题描述

我需要获得具体目标版本(字段 user-template-18)的企业 HPE ALM 中的所有要求。为了获得这些要求,我在我正在开发的 C# 项目中的代码中使用了下一个 url:http://<hp_alm>/qcbin/rest/domains/<name_domain>/projects/<name_project>/requirements /?fields=id,name,description,user-03,user-template-18

使用之前的 url,我通过 url navigator 获取企业 HPE ALM 中可用的具体 id 的所有这些字段。我的最终目标是实现如何在我的代码项目中实现/执行下一个 sql。

如果我直接在 HP ALM 控制台中执行下一个 sql,则正确返回具体目标版本的所需要求:select id,name,description,user-03,user-template-18 from req where type_id = '108' and user-模板 18 = '<version_target>'

谁能指定如何实现代码以获取执行ac#项目中具体目标版本的先前sql的所有要求?

提前致谢 问候

标签: c#apirestalmrequirements

解决方案


我开发了下一种方法来获取 HP ALM 的具体目标版本 (<target_version>) 的所有要求,并且在 XmlSerializer 行中出现错误。

您能否确认附加代码中存在哪个错误?

public Entity LoginAlm (string url, string username, string password, string domain, string project, string targetVersion) {

        var client = new RestClient(url + "/qcbin/");
        client.Authenticator = new HttpBasicAuthenticator(username, password);
        client.CookieContainer = new System.Net.CookieContainer();
        var Domain = domain;
        var Project = project;

        var getItems1 = new RestRequest("authentication-point/authenticate");
        IRestResponse response1 = client.Execute(getItems1);

        var getItems2 = new RestRequest("rest/site-session", Method.GET);
        IRestResponse response2 = client.Execute(getItems2);

        string sql = "select id,name,description,user-03,user-31,user-template-03,father-name " +
            "from req where type_id = '108' and user-template-18 = '<target_version>'";

        var getReqs = new RestRequest("rest/domains/" + Domain + "/projects/" + Project + "/requirements?query=[{" + sql + '}' + ']');

        getReqs.AddHeader("Content-Type", "application/xml");
        getReqs.AddHeader("Accept", "application/xml");

        getReqs.AddParameter("domain", Domain, ParameterType.UrlSegment);
        getReqs.AddParameter("project", Project, ParameterType.UrlSegment);

        IRestResponse response = client.Execute(getReqs);

        var reader = new StringReader(response.Content);
        var serializer = new XmlSerializer(typeof(Entity));
        var instance = (Entity)serializer.Deserialize(reader);

        return instance;//JsonConvert.SerializeObject(instance, Newtonsoft.Json.Formatting.Indented);
        
    }

推荐阅读