vert.x请求x-www-form-urlencoded数组

问题描述

美好的一天。

我想提供一个用于处理HTTP请求的Web服务。该请求具有:

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

我无法获取付款参数(付款{})。
我使用的是:routingContext.request()。getParam(“ Phone”),但这种付款方式行不通。

请提供帮助

解决方法

表单数据是纯平键值。

我根据您的描述创建了一个小示例服务器代码:

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)
}

随身携带,这是地图中的关键值对:

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),而不是对表单数据使用JSON( <li><a href="<?php echo base_url();?>ourcourses/<?php echo $r1->slug;?>"><?php echo $r1->coursearea_title;?></a></li> <?php } ?> ),它将更简单并且更适合您的用例。

如果没有,您可以尝试迭代属性并从表单数据中提取所需的内容。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...