【发布时间】:2019-09-15 06:21:03
【问题描述】:
我尝试从 Google 安全浏览 API v4 获得正确响应。虽然我收到错误“收到无效的 JSON 有效负载。未知名称”。
我使用了基于https://developers.google.com/safe-browsing/v4/lookup-api 中提到的有效负载示例的有效负载
我的负载有问题。我认为它应该是一个字符串,而不是一个真正的字典。当我使用 dict 我得到错误: TypeError: has type , but expected one of: str, unicode
我使用的代码是:
result = urlfetch.fetch(url, method=urlfetch.POST, payload=payload)
网址是([api-key]当然是我的api-key):
https://safebrowsing.googleapis.com/v4/threatMatches:find?key=[api-key]
payload 是以下字符串(不是 python 字典):
{
"client": {
"clientId": "myproject",
"clientVersion": "42" },
"threatInfo": {
"threatTypes": ["MALWARE", "SOCIAL_ENGINEERING"],
"platformTypes": ["WINDOWS"],
"threatEntryTypes": ["URL"],
"threatEntries": [ {"url":"http://www.example.com/"} ] }
}
作为输出,我期望一些 JSON 表明这个 url 是安全的。但是我得到以下结果:
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name \"{\n \"client\": {\n \"clientId\": \"myproject\",\n \"clientVersion\": \"42\"\n },\n \"threatInfo\": {\n \"threatTypes\": [\"MALWARE\", \"SOCIAL_ENGINEERING\"],\n \"platformTypes\": [\"WINDOWS\"],\n \"threatEntryTypes\": [\"URL\"],\n \"threatEntries\": [\n {\"url\":\"http://www.example.com/\"}\n ]\n }\n }\": Cannot bind query parameter. Field '{\n \"client\": {\n \"clientId\": \"myproject\",\n \"clientVersion\": \"42\"\n },\n \"threatInfo\": {\n \"threatTypes\": [\"MALWARE\", \"SOCIAL_ENGINEERING\"],\n \"platformTypes\": [\"WINDOWS\"],\n \"threatEntryTypes\": [\"URL\"],\n \"threatEntries\": [\n {\"url\":\"http://www' could not be found in request message.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"description": [similar as the message above]
}
]
}
]
}
}
任何想法,有什么问题?
谢谢
【问题讨论】:
-
尝试从 json 中删除换行符
-
嗨本杰明,感谢您的建议。然而它并没有帮助。
标签: google-app-engine safe-browsing-api