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

前提条件

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

背景信息

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 ID和AccessKey Secret。

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 消息示例