【问题标题】:Cannot add attachment to new RT ticket无法将附件添加到新的 RT 票证
【发布时间】:2019-10-23 02:04:37
【问题描述】:

我目前在一个项目中使用 RT 4.4.3,我正在尝试使用 Java 代码创建一个带有附件的新工单。

我尝试按照托管在 GitHub 上的 this BestPractical resource 提供的说明进行操作,并在此拉取列表中指定。

尝试执行该操作的代码片段如下:

PostMethod mPost = new PostMethod(TicketListConstants.SEGNALAZIONI_RTIR_URI + "/ticket");

        mPost.setRequestHeader("Content-type", "application/json");
        mPost.setRequestHeader("Authorization", TicketListConstants.SEGNALAZIONI_RTIR_TOKEN);

        /*String json = ;
        NameValuePair[] data = {
                new NameValuePair("content", json)
        };*/
        UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(request);
        File file = uploadRequest.getFile("fileName");
        String filename = uploadRequest.getFileName("fileName");

        byte[] filecontent = this.encodeBase64(file);

        mPost.setRequestBody("{ \"Queue\": \"Infosharing\", \"Subject\": \""+subject+"\",\"From\":\""+currentUser.getEmailAddress()+"\",\"To\":\"test@liferay.com\",\"Owner\":\""
                                +currentUser.getEmailAddress()+"\",\"Requestor\":\""+currentUser.getEmailAddress()+"\",\"Content\":\""+description+"\",\"AttachmentsContents\":[{\"FileName\":\""+filename+"\",\"FileType\":\"application/pdf\",\"FileContent\":\""+filecontent+"\"}]}");
        HttpClient cl = new HttpClient();
        String result = "";
        String newId = "";
        try {
            cl.executeMethod(mPost);
            result = mPost.getResponseBodyAsString();

            if (result != null) {
                JSONObject json = null;
                try {
                    json = JSONFactoryUtil.createJSONObject(result);
                } catch (JSONException e) {
                    _log.error("Error extracting ticket info: "+e.getMessage());
                }
                newId = json.getString("id");
            }
        } catch (UnsupportedEncodingException e){
            _log.error("Error in searching tickets: "+e.getMessage());
        } catch (IOException io) {
            _log.error("Error in searching tickets: "+io.getMessage());
        }

所以我发送到 RT 的 JSON 如下:

{ "Queue": "Infosharing", "Subject": "Tutto in uno","From":"test@liferay.com","To":"test@liferay.com","Owner":"test@liferay.com","Requestor":"test@liferay.com","Content":"Aggiungo tutto in un solo passaggio","AttachmentsContents":[{"FileName":"prova.txt","FileType":"plain/text","FileContent":""}]}

问题是工单创建正确,但没有添加附件。

我也尝试使用 SOAPUI 执行相同的操作,但即使响应没有任何错误,也不会将附件添加到票证中。

有人可以帮我解决我做错了什么吗?

编辑 2019-06-10: 因为据 here 报道,至少到 2018 年 12 月底:

创建附件 目前 RT 不允许创建附件 通过他们的 API。

https://rt-wiki.bestpractical.com/wiki/REST#Ticket_Attachment

但是作为临时解决方法,应该可以将附件发布到票的 cmets,任何人都可以帮助找到解决此问题的方法吗?

【问题讨论】:

  • 怎么查,有没有网址?
  • 它在第一行:不知何故 http:///REST/2.0/ticket
  • 您能否检查一下 RT 是否提供了有关如何创建带有附件的工单的任何 Swagger 详细信息?
  • 刚刚更新的问题。
  • AFAIK 无法通过任何版本的 REST API 创建带有附件的票证。我们所做的是创建一张票,然后将附件放在那里作为评论。这不是很好,但工作。

标签: java rest rt


【解决方案1】:

由于我无法测试你的代码,我建议你使用HttpClient 4,我在下面提供了一个示例代码sn-p。根据您的要求修改代码并尝试检查。

HttpPost post = new HttpPost("http://rtserver.com");
FileBody fileBody = new FileBody(file, ContentType.DEFAULT_BINARY);
StringBody stringBody1 = new StringBody("Message 1", ContentType.MULTIPART_FORM_DATA);

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart("upfile", fileBody);
builder.addPart("text1", stringBody1);

HttpEntity entity = builder.build();

post.setEntity(entity);

HttpResponse response = client.execute(post);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2019-03-22
    • 2017-04-06
    • 2019-02-11
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多