vert.x 请求 x-www-form-urlencoded 数组
vert.x request x-www-form-urlencoded array
美好的一天。
我想创建一个 Web 服务来处理 HTTP 请求。请求有:
Content-Type: x-www-form-urlencoded and body: Name=Vasya&Email=main@mail.ru&Phone=49494994&payment[sys]=none&payment[systranid]=0&payment[orderid]=1133704863&payment[products][0][name]=Мороженко&payment[products][0][quantity]=1&payment[products][0][amount]=4566&payment[products][0][price]=4566&payment[products][0][sku]=4345345345&payment[products][1][name]=Стаканчик&payment[products][1][quantity]=1&payment[products][1][amount]=100&payment[products][1][price]=100&payment[products][1][sku]=59595959&payment[amount]=4666&formid=form218781270&formname=Cart
我无法获取支付参数 (payment{})。
我使用:routingContext.request().getParam("Phone") 但对于付款,这种方法不起作用。
请大家帮忙指教
表格数据是扁平的key-value。
我根据您的描述创建了一个示例服务器代码:
suspend fun main() {
val vertx = Vertx.vertx()
val router = Router.router(vertx)
router.route()
.handler(BodyHandler.create())
router.post("/test")
.handler { ctx ->
ctx.request().formAttributes().forEach {
println("${it.key}: ${it.value}")
}
ctx.response().end()
}
vertx.createHttpServer()
.requestHandler(router)
.listenAwait(8080)
}
运行它与你的body,这是映射中的键值对:
Name: Vasya
Email: main@mail.ru
Phone: 49494994
payment[sys]: none
payment[systranid]: 0
payment[orderid]: 1133704863
payment[products][0][name]: Мороженко
payment[products][0][quantity]: 1
payment[products][0][amount]: 4566
payment[products][0][price]: 4566
payment[products][0][sku]: 4345345345
payment[products][1][name]: Стаканчик
payment[products][1][quantity]: 1
payment[products][1][amount]: 100
payment[products][1][price]: 100
payment[products][1][sku]: 59595959
payment[amount]: 4666
formid: form218781270
formname: Cart
如您所见,没有 Payment
键。
我建议您使用 JSON (application/json
) 作为您的服务器和客户端而不是 form-data,它会更简单并且更适合您的 use-case。
如果没有,你可以尝试迭代属性,从表单数据中提取你需要的内容。
美好的一天。
我想创建一个 Web 服务来处理 HTTP 请求。请求有:
Content-Type: x-www-form-urlencoded and body: Name=Vasya&Email=main@mail.ru&Phone=49494994&payment[sys]=none&payment[systranid]=0&payment[orderid]=1133704863&payment[products][0][name]=Мороженко&payment[products][0][quantity]=1&payment[products][0][amount]=4566&payment[products][0][price]=4566&payment[products][0][sku]=4345345345&payment[products][1][name]=Стаканчик&payment[products][1][quantity]=1&payment[products][1][amount]=100&payment[products][1][price]=100&payment[products][1][sku]=59595959&payment[amount]=4666&formid=form218781270&formname=Cart
我无法获取支付参数 (payment{})。
我使用:routingContext.request().getParam("Phone") 但对于付款,这种方法不起作用。
请大家帮忙指教
表格数据是扁平的key-value。
我根据您的描述创建了一个示例服务器代码:
suspend fun main() {
val vertx = Vertx.vertx()
val router = Router.router(vertx)
router.route()
.handler(BodyHandler.create())
router.post("/test")
.handler { ctx ->
ctx.request().formAttributes().forEach {
println("${it.key}: ${it.value}")
}
ctx.response().end()
}
vertx.createHttpServer()
.requestHandler(router)
.listenAwait(8080)
}
运行它与你的body,这是映射中的键值对:
Name: Vasya
Email: main@mail.ru
Phone: 49494994
payment[sys]: none
payment[systranid]: 0
payment[orderid]: 1133704863
payment[products][0][name]: Мороженко
payment[products][0][quantity]: 1
payment[products][0][amount]: 4566
payment[products][0][price]: 4566
payment[products][0][sku]: 4345345345
payment[products][1][name]: Стаканчик
payment[products][1][quantity]: 1
payment[products][1][amount]: 100
payment[products][1][price]: 100
payment[products][1][sku]: 59595959
payment[amount]: 4666
formid: form218781270
formname: Cart
如您所见,没有 Payment
键。
我建议您使用 JSON (application/json
) 作为您的服务器和客户端而不是 form-data,它会更简单并且更适合您的 use-case。
如果没有,你可以尝试迭代属性,从表单数据中提取你需要的内容。