如何在机器人框架中将 Http 客户端响应转换为字典
Posted
技术标签:
【中文标题】如何在机器人框架中将 Http 客户端响应转换为字典【英文标题】:How to Convert Http Client Response into Dictionary in robot framework 【发布时间】:2021-10-02 22:52:49 【问题描述】:我正在点击一个 url 并获取作为响应数据的数据。我想将此响应转换为字典但是它给出了这个错误 TypeError: 'com.github.hi_fi.httpclient.domain.ResponseData' object is not iterable 我想将响应转换为字典以从我的响应中获取 id 值
代码:
Create Session httpbin $testServer debug=True
Set Test Variable &headers Authorization=$Token
&data= Create Dictionary name=robot gender=male email=robot64@gmail status=Active
$resp= Post Request httpbin /public/v1/users $data headers=$headers
log $resp
&dit= Convert to Dictionary $resp //Fails
log &dit
我可以通过 $responseId= Find Json Element $resp $..id 获取 id
回应: enter image description here
【问题讨论】:
请不要发布代码或错误的屏幕截图,请花时间复制粘贴它们。日志屏幕截图中的错误与您在问题中所说的不同。 【参考方案1】:Requests 库/Post Request
返回一个响应对象(例如标头、请求本身、其他属性),而不仅仅是负载字符串。因此它无法转换为字典。
您可以使用$resp.content
获取有效负载字符串,或者如果您确定它是一个json,您可以使用$resp.json()
直接将其作为解析字典获取。
【讨论】:
我收到以下错误“解析变量 '$resp.json()' 失败:TypeError: 'com.google.gson.internal.LinkedTreeMap' 对象不可调用” &dit转换为字典 $resp.json() 日志 &dit 也 $resp.json() 不起作用 您使用哪个机器人框架库来处理 http 请求?根据错误中的类名,这看起来像一个 java 类;检查其接口文档,以及如何获取响应负载的内容。使用将它作为字符串返回的那个 - 在 python 的 Requests 库中response.content
,并使用该字符串,将其解析为 json,以获取字典。请记住 Create Dictionary
不会为您执行此操作 - 它需要 key=value 对,并且您将传递一个 json 字符串。
您仍然没有更改问题的正文,将错误包含为文本。
问题已解决,是的,我正在使用带有机器人框架的 java 库,我得到的响应是字典的形式,我必须通过 java 代码转换为 json(因为我没有有json java机器人库)以上是关于如何在机器人框架中将 Http 客户端响应转换为字典的主要内容,如果未能解决你的问题,请参考以下文章