CSB 通过 SDK 和 Broker 实现对同名多参数的支持。

前提条件

使用的 CSB SDK 版本为 http-client-1.1.5.7ws-client-1.1.5.7

背景信息

HTTP 请求需要支持同名多参数,实际效果为数组,如果后端也是 HTTP 类型,须保持该形态传递到后端服务。

例如:CSB 接收到形如 key=value1&key=value2 的请求时,会作为 key = [ value1, value2 ] 处理。如果后端服务也是 HTTP 类型时,传递方式遵循后端接口定义,缺省保持为 key=value1&key=value2

代码示例

HttpParameters.Builder builder = new HttpParameters.Builder();
builder.requestURL("http://localhost:18086/CSB") // 设置请求的URL
  .api("http2http1") // 设置服务名
  .version("1.0.0") // 设置版本号
  .method("post") // 设置调用方式, get/post
  .accessKey("ak").secretKey("sk"); // 设置accessKey和secretKey

try {
  // 设置请求参数
  builder.putParamsMap("name", "name1中文sdfs sdlkfsadfksdkfds").putParamsMap("times", "3")
    .putParamsMap("str2", "31", "32", "33")  //设置str2的数组入参
    .putParamsMap("str3", Arrays.asList("aa", "bb", "cc")); //设置str3的List入参
  HttpReturn ret = HttpCaller.invokeReturn(builder.build());
  System.out.println("------- ret=" + JSON.toJSONString(ret));
} catch (HttpCallerException e) {
  e.printStackTrace(System.out);
}

HTTP 消息示例如下图所示:

HTTP 消息示例