【问题标题】:Add PDF file as attachment to TestTrack using SOAP使用 SOAP 将 PDF 文件作为附件添加到 TestTrack
【发布时间】:2013-01-23 21:24:08
【问题描述】:

在过去的一年里,我最近开始使用 C#,所以我对此有些陌生,但通常可以通过一些努力来解决问题,但这个我却躲开了。我们使用 TestTrack 在我们公司进行开发错误/问题跟踪。我创建了一个自定义 Windows 窗体应用程序,作为我们一个部门的 TestTrack 的前端。它使用 SOAP 进行连接。我没有使用 WPF/WCF,也不想走那条路。我很难找到任何有关如何正确编码 PDF 附件文件的示例。下面的代码确实在 TestTrack 中为一个已经存在的问题创建了一个附件,但是当您尝试在 TestTrack 中打开它时,它会弹出一条错误消息,上面写着“图像数据不足”。如果您想使用 SOAP 将文本文件添加到 TestTrack,下面的示例确实有效。我想知道我需要在下面更改什么,以便我可以将 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);
    }
}

【问题讨论】:

  • 去看看。在寻求帮助的一个小时内,我找到了解决方案的答案。哎呀。无论如何,我很高兴。 :-) 一旦这个网站允许我这样做,我会在几个小时内发布我的答案。

标签: c# pdf soap attachment testtrack


【解决方案1】:

这是修改后的方法,它允许我将 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);
    }

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2018-05-05
    相关资源
    最近更新 更多