如何在Delphi 10.4.2中从REST响应提取字符串类型的Token值
Delphi 10.4.2提取REST返回的单一字符串Token问题解决
环境与背景
使用Delphi 10.4.2开发客户端,REST服务器每2-3小时生成新Token,客户端需登录获取。在Swagger和Postman中,服务器返回HTTP 200,响应为类似"d14e02b7-ae5e-11ed-8105-005056b4f1d1"的UUID字符串。
遇到的问题
- 在Rest Debugger的「Parameters」页添加
query参数后,服务器返回HTTP 200,但在「Tabular data」选项卡选择value作为根元素并点击「Apply」时,报错:Response RootElement, "value", is not a valid path for the response JSON. - 在窗体上放置RecsClient、RestRequest、RestResponse、RestAdapter组件,设置RestResponse的RootElement属性为'value'或'resultData'时,出现相同错误。
- 清空RestResponse的RootElement属性后执行RestRequest,可得到HTTP 200且Token值出现在FDMem组件,但不知如何从RestResponse中提取该单一字符串UUID值。
解决方案
此前的困惑源于误以为JSON必须用{}包裹并以键值对形式存在,实际上单独的字符串也是有效的JSON格式,JSONLint可验证其有效性。
以下两种代码可实现Token提取:
var token:String; token:=RestResponse1.JSONValue.Value;
或
var JV: TJSONValue; str1,str2: string; begin str1:= fRefGoods.rrespLogin.Content; JV:=TJSONObject.ParseJSONValue(str1); str2:=JV.Value; end;
内容的提问来源于stack exchange,提问作者basti
相关产品推荐
相关产品推荐

