【发布时间】:2014-07-29 18:18:42
【问题描述】:
这可能是一个简单的。
我正在通过 Delphi XE6 使用 RestClient 组件访问 RESTFul 服务:TRestClient、TrestRequest、TrestResponse 和 THTTPBasicAuthenticator。
该服务需要我添加没有问题的参数:
RestReq.Params.AddItem('param1', 'value1');
RestReq.Params.AddItem('param2', 'value2');
上面的代码在服务器端看起来像:
{
"param1":"value1",
"param2":"value2"
}
但是,当我需要发送一个数组参数时,我会尝试:
RestReq.Params.AddItem('param1', 'value1');
RestReq.Params.AddItem('param2', 'value2');
RestReq.Params.AddItem('param3', '[v1, v2, v3]');
服务将拒绝它,因为第三个参数不是预期的数组。这是正确的,因为它收到:
{
"param1":"value1",
"param2":"value2",
"param3":"[v1,v2,v3]"
}
我知道它看起来很简单。已切换 RestClient.ContentType,已尝试操作数组。试过改参数ContentType、Options,猜解不是我喜欢玩的游戏。 所以问题是:使用 RestClient 组件¿如何使用以下参数调用我的服务?
{
"param1":"value1",
"param2":"value2",
"param3":[
"v1",
"v2",
"v3"
]
}
提前感谢您的宝贵时间。
【问题讨论】:
-
我完全不了解 REST 或 JSON,所以只能发表评论,但您是否尝试过:
RestReq.Params.AddItem('["v1", "v2", v3"]');?这是我会尝试的第一件事。 -
是的,服务器收到:
-
"[\"v1",\"v2",\"v3"]".
-
嗯...好的。我没有更好的主意,抱歉。
-
如果将参数的
Options设置为poDoNotEncode会怎样?