The easiest way is to delegate to Cxf FormEncodingProvider (set to a field in your custom provider) and in your provider's readFrom you'd get the Form from the Cxf provider and convert HTH Sergey
On Tuesday, April 11, 2017, KARR, DAVID <[email protected]> wrote: > > -----Original Message----- > > From: Sergey Beryozkin [mailto:[email protected] <javascript:;>] > > Sent: Tuesday, April 11, 2017 9:42 AM > > To: [email protected] <javascript:;> > > Subject: Re: Better way to get post response parameters into a POJO? > > > > Hi, well, if the response data are in the form format then you need to > > read it as a form, but perhaps a cleaner way is to create > > MessageBodyReader for CodeAndMessage, which can convert a form response, > > Cheers Sergey > > I guess I was heading in that direction. Are there examples of creating a > MessageBodyReader from a Form Map? I'll start reading up on writing MBRs, > but it would be good if I had something similar to start with. > > > On Tuesday, April 11, 2017, KARR, DAVID <[email protected] <javascript:;>> > wrote: > > > > > I posted this on SO > > > (https://urldefense.proofpoint.com/v2/url?u=http-3A__stackoverflow.com > > > _&d=DwIBaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=OsTemSXEn-xy2uk0vYF_EA&m=t5H1VVQ > > > JcPekInd0PePjrjSEVSkWQBuWPEFhDlrQ62A&s=RZgen5CwkecIc_3aDZCfdv4MggcCt_7 > > > MwGPZWv3gLXw&e= > > > questions/43333855/using-cxf-clientbuilder-how-to-unmarshal-post-respo > > > nse- parameters-into-java-cla), but some people might not see it, but > > > might see it here, so I'm asking here also. > > > > > > To put it another way, I have the following code as a base: > > > ------------------- > > > public CodeAndMessage validateToken(String token) { > > > WebTarget target = > > client.target(getHostPort()). > > > path(getPath()); > > > Builder request = target.request(MediaType. > > > APPLICATION_JSON_TYPE); > > > Form form = new Form(); > > > form.param("TokenID", token); > > > Form responseForm = > > request.post(Entity.entity(form, > > > MediaType.APPLICATION_FORM_URLENCODED_TYPE), Form.class); > > > System.out.println("responseForm[" + responseForm + "] > > > map[" + responseForm.asMap() + "]"); > > > return new CodeAndMessage(). > > > errorCode(responseForm.asMap() > > > .getFirst("errorCode")). > > > > > errorMessage(responseForm.asMap().getFirst(" > > > errorMessage")); > > > } > > > ---------------- > > > > > > Where "CodeAndMessage" is a simple POJO with two fields. > > > > > > This works, but I was wondering if there is a cleaner way to do this, > > > to avoid having to use the Form response and getting the map values. > > > > > > > > > -- > > Sergey Beryozkin > > > > https://urldefense.proofpoint.com/v2/url?u=http- > > 3A__sberyozkin.blogspot.com&d=DwIBaQ&c=LFYZ- > > o9_HUMeMTSQicvjIg&r=OsTemSXEn- > > xy2uk0vYF_EA&m=t5H1VVQJcPekInd0PePjrjSEVSkWQBuWPEFhDlrQ62A&s=SjdRkGUeJQe > > WcTlvRwImNayrGo841bzo52GGjT61Tfs&e= > > Talend - https://urldefense.proofpoint.com/v2/url?u=http- > > 3A__www.talend.com&d=DwIBaQ&c=LFYZ-o9_HUMeMTSQicvjIg&r=OsTemSXEn- > > xy2uk0vYF_EA&m=t5H1VVQJcPekInd0PePjrjSEVSkWQBuWPEFhDlrQ62A&s=JohgjpbXgXz > > hcMmAnCzGU135vYCDCXC6eiNQlciJx8U&e= > -- Sergey Beryozkin http://sberyozkin.blogspot.com Talend - http://www.talend.com
