【问题标题】:Parsing FORM-ENCODED parameters with GRAILS (chargify webhooks)使用 GRAILS (chargify webhook) 解析 FORM-ENCODED 参数
【发布时间】:2016-07-17 03:25:00
【问题描述】:

我有一个 GRAILS 3 控制器,它从 web 服务 (Chargify) 接收具有这种格式的 HTTP 帖子(有效负载部分有大约 100 个条目和很多子字段):

POST / HTTP/1.1
Accept: */*; q=0.5, application/xml
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
X-Chargify-Webhook-Id: 81309408
X-Chargify-Webhook-Signature: xxxxxxxxxxxxx
X-Chargify-Webhook-Signature-Hmac-Sha-256: yyyyyyyyyyyyyy
Content-Length: 48
User-Agent: Ruby
X-Newrelic-Id: xxxxxx
X-Newrelic-Transaction: aaaaaaaaaaaaaa=
Host: myhost.test.it

id=81197881&event=statement_settled&payload[site][id]=12345&payload[site][subdomain]=test-sandbox

GRAILS 有什么方法可以解析“payload”部分并将其动态转换为 POJO(或简单的 hashmap)Chargify 使用GRAILS framework 无法识别的这种奇怪格式,我无法自动解析它。

有人帮我解析吗?提前感谢您的帮助。

【问题讨论】:

  • 为了确保我理解正确.. 示例末尾以 ID 开头的部分是 Post 请求的正文,还是 URL 的一部分?
  • 是请求的正文
  • 我没有看到任何内置方法可以自动将请求正文解析为 pogo。您是否愿意接受其他选择?

标签: java grails chargify


【解决方案1】:

你可以试试这个吗?

def readChargify() {
    String requestData = request.reader.text
    def reqMap = org.grails.web.util.WebUtils.fromQueryString(requestData)
}

【讨论】:

  • 它不起作用,例如从请求正文 id=81197881&event=statement_settled&payload[site][id]=12345&payload[site][subdomain]=test-sandbox 它将创建一个请求映射,例如:[id:81197881, event:statement_settled, payload[site][id] : 12345, payload[site][subdomain] : test-sandbox],而不是像 {id='81197881', event='statement_settled', site=Site{subdomain='test-sandbox', id='12345'}} 这样的嵌套映射
【解决方案2】:

这个解析 webhook 主体的 Java 库由另一个 Chargify 客户提供,可能会有所帮助:

https://github.com/prowave/chargify-webhook-java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    相关资源
    最近更新 更多