CSB通过SDK和Broker实现对同名多参数的支持。
前提条件
使用的CSB SDK版本为http-client-1.1.5.8和ws-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消息示例如下图所示:
