Как я должен написать Джерси, чтобы сделать отдых доступным по заданному весеннему коду - PullRequest
0 голосов
/ 06 сентября 2011

Вот клиент rest, написанный на Spring:

public void addGadget(String gadgetName, String gadgetUrl) {
    Map<String, String> map = new HashMap<String, String>();
    map.put("gadgetName", gadgetName);
    map.put("gadgetUrl", gadgetUrl);
    restTemplate.postForLocation(restServiceUrl, map);
}

Это не мой код, и я не могу его изменить. Я должен написать отдых службы, но без весны, используя майку. Вот мой код, но он не работает:

@Path("gadgets")
public class RestService {

@POST
@Consumes("application/x-www-form-urlencoded")
public Response addGadget(@FormParam("gadgetUrl") String gadgetUrl,
        @FormParam("gadgetName") String gadgetName) throws Exception {
    //some logic
    return Response.status(201).build();
}
}

Когда я пытаюсь получить доступ к этому сервису с помощью Spring-клиента, я получаю исключение:

org.springframework.web.client.HttpClientErrorException: 415 Неподдерживаемый тип носителя

Как мне переписать декларацию сервиса (думаю, проблема в аннотации Consumes), чтобы сделать ее доступной для клиента Spring с неизмененным кодом Spring

1 Ответ

0 голосов
/ 15 сентября 2011

При вводе:

@Consumes("application/x-www-form-urlencoded")

Вы сужаете тип, приемлемый для вашей службы. Пожалуйста, постарайтесь не делать этого, просто удалите эту строку кода и посмотрите, что произойдет. Если это не поможет, это означает, что RestTemplate настроен на использование неизвестного типа носителя. Если это так, проверьте, какой тип носителя отправляется объектом Spring RestTemplate. Если удаление @Consumes не поможет, напишите, какой тип носителя отправляется из RestTemplate, чтобы я мог помочь больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...