2016-08-30 4 views
0

Внешняя служба не моя, это «Freshdesk».API создания внешней службы. Отправка двоичных данных

Мне удалось создать Java-API с Java-ws-rs, чтобы иметь возможность называть его 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 -v -u [email protected]:test -F "attachments[][email protected]/path/to/attachment1.ext" -F "attachments[][email protected]/path/to/attachment2.ext" -F "[email protected]" -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

Можете ли вы немного уточнить последнюю часть своего вопроса? Я получаю завиток и другие вещи. – Azim

+0

Не могли бы вы отправить полный код клиента? –

ответ

2

Документация Freshdesk заявляет следующее о создании билета с вложениями:

запрос

Этот API должен иметь его тип содержимого установлен multipart/form-data.

Следовательно, вы не сможете создать билет с вложениями с помощью JSON.


В зависимости от используемой вами реализации JAX-RS существуют разные способы отправки и получения файлов.

Если вы используете Jersey 2.x, вам необходимо добавить многочастную зависимость и зарегистрировать функцию multipart для обработки многочастных запросов. Проверьте, пожалуйста, this answer, как это сделать. Вы можете использовать FormDataMultiPart для загрузки файла со своего клиента.

Смежные вопросы