Python 为什么在使用tetpyclient发出POST请求时出现403错误?
试图使用他们的tetpyclient在Cisco的Tetration API中发出POST请求。当使用get请求时,我得到200个响应,但当使用json过滤器发出POST请求以查询流时,我得到403个响应。我的json数据语法是否不正确,或者python中是否存在语法错误Python 为什么在使用tetpyclient发出POST请求时出现403错误?,python,python-3.x,python-2.7,api,cisco,Python,Python 3.x,Python 2.7,Api,Cisco,试图使用他们的tetpyclient在Cisco的Tetration API中发出POST请求。当使用get请求时,我得到200个响应,但当使用json过滤器发出POST请求以查询流时,我得到403个响应。我的json数据语法是否不正确,或者python中是否存在语法错误 from tetpyclient import RestClient import urllib3 import json import requests from datetime import datetime from
from tetpyclient import RestClient
import urllib3
import json
import requests
from datetime import datetime
from flask import *
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
API_ENDPOINT = "https://"
restclient = RestClient(API_ENDPOINT, credentials_file = 'path/to/credentials.json', verify = False)
get = restclient.get("/flowsearch/metrics")
print (get.status_code) ##to test if api can be reached
req_payload = {"t0": "2020-08-01T09:00:00-0700",
"t1": "2020-08-01T10:00:00-0700",
"scopeName": "Default",
"limit": 10,
"filter": {
"type": "and",
"filters": [
{"type": "eq", "field": "src_address","value": "00.000.0.000" },
{"type": "eq", "field": "dst_address","value": "000.000.00.00" }
]
}
}
resp = restclient.post('/flowsearch', json_body=json.dumps(req_payload))
print(resp.content)
print (resp.status_code)
if resp.status_code == 200:
parsed_resp = json.loads(resp.content)
print (json.dumps(parsed_resp, indent=4, sort_keys=True))
我感谢所有的反馈!
以下是到tetration api文档的链接:
HTTP 403是HTTP状态代码,意味着出于某种原因禁止访问请求的资源
看起来您正在使用的凭据不允许调用
/flowsearch
,这是我最初的想法,但是对于get请求,我不也会得到400或403吗?我是HTTP客户端的新手,因此我可能是错的,如果是权限问题,可能需要将问题升级到我之上。`还需要为get请求获取400或403`-不一定get和post需要不同的凭据?@DaniMajor否。相同的凭据应该可以为您服务。好的,很好,对于get生成200而get post生成403的原因有什么解释吗?