使用 SOAP 将 PDF 文件作为附件添加到测试跟踪中

本文关键字:添加 测试 跟踪 SOAP PDF 文件 使用 | 更新日期: 2023-09-27 17:55:56

在过去的一年里,我最近开始使用C#,所以我对此有点陌生,但通常可以通过一些努力来破解一些东西,但这个是我无法做到的。 我们使用TestTrack在我们公司进行开发错误/问题跟踪。 我创建了一个自定义的 Windows 窗体应用程序,作为我们其中一个部门的 TestTrack 前端。 它使用 SOAP 进行连接。 我没有使用 WPF/WCF,也不想走那条路。 我很难找到有关如何正确编码附件(PDF)的任何示例。 下面的代码实际上确实在TestTrack中创建了一个附件,指向已经存在的问题,但是当您尝试在TestTrack中打开它时,它会弹出一条错误消息,指出"图像数据不足"。 如果要使用 SOAP 将文本文件添加到测试跟踪,下面的示例确实有效。 我想知道我需要在下面更改什么,以便我可以将PDF文件放入TestTrack,然后能够在TestTrack应用程序中打开它而不会出现上述错误。 提前感谢您的任何输入/帮助。

    public void getAttachments(long lSession, CDefect def)
    {
        ttsoapcgi cgiengine = new ttsoapcgi();
        // Lock the defect for edit.
        CDefect lockedDefect = cgiengine.editDefect(lSession, def.recordid, "", false);
        string attachment = "c:''TEST''TEST_PDF.PDF";
        CFileAttachment file = new CFileAttachment();
        file.mstrFileName = Path.GetFileName(attachment);
        System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
        StreamReader reader = new StreamReader(attachment);
        file.mstrFileName = Path.GetFileName(attachment);
        file.mpFileData = enc.GetBytes(reader.ReadToEnd());
        reader.Close();
        CReportedByRecord reprec = lockedDefect.reportedbylist[0];
        CFileAttachment[] afile = reprec.attachmentlist;
            if (afile == null)
            {
                lockedDefect.reportedbylist[0].attachmentlist = new CFileAttachment[1];
                lockedDefect.reportedbylist[0].attachmentlist[0] = file;
            }
            // Save our changes.
            cgiengine.saveDefect(lSession, lockedDefect);
    }
}

使用 SOAP 将 PDF 文件作为附件添加到测试跟踪中

以下是修改后的方法,它允许我将PDF附加到SOAP并将其作为问题的附件放入TestTrack中:

        public void getAttachments(long lSession, CDefect def)
    {
        ttsoapcgi cgiengine = new ttsoapcgi();
        // Lock the defect for edit.
        CDefect lockedDefect = cgiengine.editDefect(lSession, def.recordid, "", false);
        string attachment = "c:''TEST''TEST_PDF.PDF";
        CFileAttachment file = new CFileAttachment();
        file.mpFileData = File.ReadAllBytes(attachment);
        file.mstrFileName = Path.GetFileName(attachment);
        CReportedByRecord reprec = lockedDefect.reportedbylist[0];
        CFileAttachment[] afile = reprec.attachmentlist;
            if (afile == null)
            {
                lockedDefect.reportedbylist[0].attachmentlist = new CFileAttachment[1];
                lockedDefect.reportedbylist[0].attachmentlist[0] = file;
            }
            // Save our changes.
            cgiengine.saveDefect(lSession, lockedDefect);
    }