Доступ к телу сообщения RESTful-запрос - PullRequest
1 голос
/ 05 марта 2011

Я могу полностью прочитать пост-запрос (заголовки + необработанное тело), ​​используя com.sun.net.httpserver.HttpServer с HttpHandler для него.

Но я не могу сделать то же самое, используя javax.xml.ws.WebServiceProvider Я могу прочитать заголовки, но мне нужны необработанные данные тела в запросе, будь то простой текст, XML или байты данных.InputStreamReader будет в порядке.

   @ServiceMode(value = javax.xml.ws.Service.Mode.MESSAGE) 
    @WebServiceProvider
    @BindingType(value = HTTPBinding.HTTP_BINDING) 
    public class MyRestHandler 
    implements Provider<Source> {

       @Resource
       protected WebServiceContext wsContext; // injected


       public Source invoke(Source source) {

          /* source happens to be null except for text/xml BODY type
           * in the incoming request.
           * In this case, source is a SAXSource*/

       }

    }

Приложение (после наблюдения Питера Кнего)

В Java Web Services страницы 126-138, автор представляет пример веб-сервиса RESTfulгде используется JAX-WS:

@ServiceMode(value = javax.xml.ws.Service.Mode.MESSAGE) 
@WebServiceProvider
@BindingType(value = HTTPBinding.HTTP_BINDING) 
public class RestfulTeams 
        implements Provider<Source> {  ... }

Даже на странице 136-137 он расширяет его для поддержки метода POST, получая доступ к телу запроса.Понятно, что он работает с классами библиотеки JAX-WS, потому что он использует xml в запросе тела.Теперь я понимаю ваше удивление, и почему source всегда нулевой, но для текстовых / xml тел.Действительно, самым простым способом было использование библиотеки JAX-RS.

1 Ответ

2 голосов
/ 05 марта 2011

Используйте реализацию JAX-RS , например Джерси .Книга: ОТДЫХ Java

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