我在数据类中有这个方法:
def submit_request(self, method, path, body=None, header=None):
conn = httplib.HTTPSConnection(self.host)
conn.request(method, path, body, self.headers)
resp = conn.getresponse()
return resp.status, resp.read()
我用它来获取每个请求的响应。对于我正在处理的当前响应,我无法获取具体值。
通常我会去
status, resp = submit_request("GET", "/path/to/...", body)
info = json.loads(resp)
value = info["value"]
我将设置为使用dict中的相应值。但正如我将在下面展示的那样,我无法为这种情况做到这一点。
>>> print resp
[{"deviceId":28,"displayName":"test-device","status":"Pending_Authorized"}]
如果我复制并点击这个回复我可以做
>>> resp[0]['deviceId']
28
但在代码中执行此操作无效(我只是从[
获得resp[0]
)。我一直在
TypeError: string indices must be integers, not str
有关为何发生这种情况的任何迹象?
以下是相关代码:
def test_get_device_list(self):
'''
GET /Device/List
'''
status_code, resp = self.api.submit_request("GET", "/Device/List")
log.log_info("GET /Device/List: HTTP - %s" % str(status_code))
log.log_info("GET /Device/List: Response - %s" % str(resp))
self.assertEqual(status_code, 200)
#GET /Device/{DeviceID}
device_id = self.api.parse_header(resp, "deviceId")
status_get, resp_get = self.api.submit_request("GET", "/Device/%s" % str(device_id))
log.log_info("GET /Device/{DeviceID}: HTTP - %s" % str(status_get))
log.log_info("GET /Device/{DeviceID}: Response - %s" % str(resp_get))
self.assertEqual(status_get, 200)
来自支持数据类
def submit_request(self, method, path, body=None, header=None):
conn = httplib.HTTPSConnection(self.host)
conn.request(method, path, body, self.headers)
resp = conn.getresponse()
return resp.status, resp.read()
def parse_header(self, resp, arg):
info = json.loads(resp)
parse = info["%s" % str(arg)]
return parse
这是完整的错误:
ERROR: test_get_device_list (__main__.TestAPI)
----------------------------------------------------------------------
Traceback (most recent call last):
File "API.py", line 207, in test_get_device_list
device_id = self.api.parse_header(str(resp), "deviceId")
File "/home/zach/Desktop/Automation/data.py", line 47, in parse_header
parse = info["%s" % str(arg)]
TypeError: list indices must be integers, not str
我正试图找到一种方法来从响应中获取上述'deviceId'。我使用parse_header()方法做了不同的响应但是对于这个响应它不起作用。
答案 0 :(得分:0)
您正在尝试使用字符串访问您的列表,在尝试访问密钥之前,您是否尝试访问此处的第一项以访问您的字典?
parse = info[0].get(arg)