पर भेजे गए अनुरोध का निकाय पढ़ें मुझे ड्रॉपवॉज़र सेवा में भेजे गए जेसन अनुरोध की सामग्री को पढ़ने की आवश्यकता है। संदेश को ड्रॉपवार्ड द्वारा एनोटेटेड ओबब्जेक्ट में क्रमबद्ध किया गया है जो विधि (PaymentMessage
ऑब्जेक्ट) का इनपुट है। मैंने विधि के इनपुट पैरामीटर के रूप में HttpServletRequest
जोड़ा है। HttpServletRequest
शून्य नहीं है, लेकिन विधि HttpServletRequest#getInputStream()
एक गैर-शून्य अभी तक खाली स्ट्रीम देता है।एक ड्रॉपविज़ार्ड सेवा
कर्ल: curl -i -X POST -H'Content-Type: application/json; charset=UTF-8' \ http://localhost:8080/NL/users/555855/payments -d '{"eventId":"110099110099","hznHouseholdId":"1234567_nl","ipAddress":"123.123.123.123","transactionId":"799ef666-e09c-8350-247b-c466997714ad","transactionDate":"2014-09-29T16:56:21Z","appName":"Flappy Bird"}'
कोड:
@POST
@Path("/{countryCode}/users/{customerId}/payments")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response processPaymentAction(
@Context final HttpServletRequest request,
@Nonnull @PathParam("countryCode") final String countryCode,
@Nonnull @PathParam("customerId") final String customerId,
@Valid PaymentMessage paymentMessage)
throws IOException, ServletException {
LOG.debug("Request "+request.toString());
final ByteSource byteSource = new ByteSource() {
@Override
public InputStream openStream() throws IOException {
return request.getInputStream();
}
};
LOG.debug("charset "+request.getCharacterEncoding());
final String contents = byteSource.asCharSource(Charset.forName(request.getCharacterEncoding())).read();
LOG.debug("contents: "+contents);
return Response.status(Response.Status.ACCEPTED).build();
}
पोस्ट बॉडी को भुगतान संदेश में मैप किया जाना चाहिए जैसा आपने कहा था। आप अनुरोध ऑब्जेक्ट से बाहर निकलने का प्रयास कर रहे हैं जो पहले से ही पीओजेओ का हिस्सा नहीं है कि जैक्सन को आपके लिए मैप किया जाना चाहिए था? – th3morg
मैं स्ट्रिंग फॉर्म में संदेश का बॉडी प्राप्त करने और पीओजेओ ऑब्जेक्ट को क्रमबद्ध करने की कोशिश कर रहा था क्योंकि 1. मैं अनुरोध के एमडी 5 योग को सत्यापित करने के लिए शरीर का उपयोग करना चाहता था 2. मैं इनपुट को क्रमबद्ध करना चाहता था ऑब्जेक्ट क्योंकि ऑब्जेक्ट्स का उपयोग करना आसान है :) –