2015-07-23 1 views
3

У меня есть следующий ответ, который должен исходить от URL-адреса MailChimp.Как получить параметры FORM/POST в контроллере весны?

Это строка ТЕЛО:

RAW BODY 

    type=usub&fired_at=2015-07-23+17%3A19%3A34&data%5Baction%5D=unsub&data%5Breason%5D=manual&data%5Bid%5D=9383uy636&data%5Bemail%5D=youremail%40YOURDOMAIN.com&data%5Bemail_type%5D=html&data%5Bip_opt%5D=202.9.3.003&data%5Bweb_id%5D=404004&data%5Bmerges%5D%5BEMAIL%5D=YOUREMAIL%40YOURDOMAIN.com&data%5Bmerges%5D%5BFNAME%5D=NAME&data%5Bmerges%5D%5BLNAME%5D=LASTNAME&data%5Blist_id%5D=2288883 
FORM/POST PARAMETERS 

fired_at: 2015-07-22 12:19:34 
data[email]: [email protected] 
data[id]: 56775409ta 
data[web_id]: 09833944 
data[merges][EMAIL]: [email protected] 
type: unsub 
data[list_id]: 99884hy372 
data[merges][FNAME]: Name 
data[ip_opt]: 202.0.9.3333 
data[reason]: manual 
data[email_type]: html 
data[action]: unsub 
data[merges][LNAME]: LastName 

**QUERYSTRING key: a4483983hu473004884j0x** 

HEADERS 

Accept: */* 
Total-Route-Time: 0 
Host: requestb.in 
Connection: close 
Content-Length: 395 
User-Agent: MailChimp.com 
Connect-Time: 0 
Via: 1.1 vegur 
X-Request-Id: 6633d8-653e-4cea-884j-9933ju4773h 
Content-Type: application/x-www-form-urlencoded 

Я использовал @RequestParameter ранее при работе с пружинными контроллерами, однако я не уверен, как получить данные из приведенных выше реакций для данных, например [слияния] [ FNAME]:

Как я могу получить QueryString внутри контроллера Spring? QueryString ключ: a4483983hu473004884j0x

//I have the following code to begin with 
@RequestMapping("/unsubscribewebhook") 
    public ZapJasonMessage unsubscribeWebHook(
    @RequestParam("key") String key, 
    @RequestParam ("data[merges][FNAME]") String firstName 
) { 

} 

Я ценю вашу помощь!

+0

удален ответ. Дайте мне знать, если вы найдете какое-либо решение :) –

+0

Ребята из MailChimp, эти данные, отправленные через webhook, отформатированы как данные HTTP POST, такие как подача формы, а не JSON. Это означает, что вы должны обрабатывать эту информацию так же, как обрабатывать данные, представленные через форму на вашей веб-странице. Я использую Spring .. – WowBow

+0

Так что передать объект запроса в аргументе метода в контроллере и делать request.getParameter должен работать –

ответ

3

Вам просто нужно ввести WebRequest в качестве параметра в свой POST-метод контроллера, а затем запросить getParameter() с заданным параметром из webchook Mailchimp.

например:

@RequestMapping(path="/MyUrl", method=RequestMethod.POST) 
public ModelAndView process(WebRequest request){ 
    System.out.println(request.getParameter("type")); 
    System.out.println(request.getParameter("data[merges][EMAIL]")); 
    return new ModelAndView([YOURVIEWHERE]); 
} 

Это все ...

С уважением.

+1

Thx @emeraldjava –