外部服务不是我的,它是“Freshdesk”。
我设法用Java-ws-rs创建一个Java-API,以便能够调用它的WS来创建一个“Ticket”。
这是我的界面:
@Path("/api/v2/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface FreshdeskService {
@POST
@Path("tickets")
TicketResponse create(TicketRequest ticketRequests);
}
在这里我的对象(我删除了很多字段,因为这里没有必要):
public class TicketRequest {
private String name;
private Long requester_id;
private String email;
}
一切都很好,可以创建票证。我的问题是当我尝试为此故障单添加附件时。以下是文档:http://developers.freshdesk.com/api/#create_ticket
curl命令是:
curl -v -u user@yourcompany.com:test -F "attachments[]=@/path/to/attachment1.ext" -F "attachments[]=@/path/to/attachment2.ext" -F "email=example@example.com" -F "subject=Ticket Title" -F "description=this is a sample ticket" -X POST 'https://domain.freshdesk.com/api/v2/tickets'
如您所见,他们将数据转换为-F
的表单。但我不知道如何使用我的API来做到这一点。我可以在List<File>
对象中添加TicketRequest
,但它不起作用。有什么帮助吗?
答案 0 :(得分:2)
Freshdesk文档说明了如何创建带附件的票证:
此API请求的内容类型必须设置为
multipart/form-data
。
因此,您无法使用JSON创建带附件的票证。
根据您使用的JAX-RS实现,有不同的方式来发送/接收文件。
如果您使用的是Jersey 2.x,则需要添加multipart依赖项并注册multipart功能以处理多部分请求。有关如何执行此操作的详细信息,请查看this answer。您可以使用FormDataMultiPart
从客户端上传文件。