2016-01-19 4 views
2

Мне нужно восстановить всю полезную нагрузку запроса POST формы, чтобы отправить его обратно получателю (PayPal требует это как процедуру проверки). Я попробовал несколько способов, но я всегда получаю такое же предупреждение, без полезной нагрузки:Не могу получить полезную нагрузку запроса POST на Джерси

Warning: A servlet request to the URI http://localhost:8080/ipnlistener contains form parameters in the request body but the request body has been consumed by the servlet or a servlet filter accessing the request parameters. Only resource methods using @FormParam will work as expected. Resource methods consuming the request body by other means will not work as expected. 

Вот код слушателя

@POST 
@Path("/ipnlistener") 
public Response testIpn(String t) { 
    System.out.println(t); 
    return Response.ok().build(); 
} 

Я пытался добавить разные Consumes аннотаций, но ничего не меняется. Конечно, с аннотациями FormParam я могу получить отдельные поля, но мне действительно нужен весь текст запроса.

Я также попытался с помощью следующей

public Response testIpn(@Context HttpServletRequest req) throws IOException { 
    BufferedReader reader= req.getReader(); 
    String sCurrentLine; 
    while ((sCurrentLine = reader.readLine()) != null) { 
     System.out.println(sCurrentLine); 
    } 

    return Response.ok().build(); 
} 

, но я получаю ошибку

getInputStream() has already been called for this request 
+0

Если у вас есть решение этой проблемы, пожалуйста, добавьте ответ. Я застрял и понятия не имею, как это решить. –

ответ

0

я думаю, вы можете добавить следующий код в файл:

@Context 
private HttpServletRequest request; 

HttpServletRequest содержит весь текст запроса!

+0

Я уже пытался добавить его в качестве аргумента метода testIpn, но это не сработало. При попытке получить буферизованный ввод от объекта у меня возникла ошибка, говорящая, что метод уже был вызван в другое место и не может быть вызван дважды (извините, я не могу быть более конкретным прямо сейчас). Или вы хотели добавить его вне подписи метода? Какая разница? И что бы вы сделали, чтобы получить полезную нагрузку в виде строки? – splinter123

+0

@ splinter123 Вы когда-нибудь решают эту проблему? У меня такая же проблема :(. – WiseTree

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