【发布时间】: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 创建带有附件的票证。我们所做的是创建一张票,然后将附件放在那里作为评论。这不是很好,但工作。