如何在机器人框架中将 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 客户端响应转换为字典的主要内容,如果未能解决你的问题,请参考以下文章

在Angular8中将HTTP响应json转换为打字稿对象

如何在喷雾中将所有拒绝转换为自定义 json?

发送连接升级后,如何在golang中将客户端http连接升级到websockets

如何在 bash 中将 json 响应转换为 yaml

在PHP中将标签转换为字符串[重复]

如何在richtextbox中将字符串数据转换为html