首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python等效于提供400响应的Curl

Python等效于提供400响应的Curl
EN

Stack Overflow用户
提问于 2020-07-07 23:15:37
回答 1查看 113关注 0票数 1

正在尝试将shell curl重写为包含请求模块的python脚本...

我的shell脚本:

代码语言:javascript
复制
#!/bin/bash

ip=$1
url=https://xxx.xx.xx.com
secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
expand=computerStatus


curl --silent -X POST "$url/api/computers/search?expand=$expand" -H "Content-Type: application/json" -H "api-secret-key: $secret" -H "api-version: v1" -d '{"maxItems": 10,"searchCriteria": [{"fieldName": "hostName","stringTest": "equal", "stringValue": "'"$ip"'"}]}' -k > $file

上面的代码在bash中运行良好。

我正在尝试转换为类似的python等效项。

我尝试过的

代码语言:javascript
复制
import json
import requests
import sys

ip = sys.argv[1]

sys_info = []

url=https://xxx.xx.xx.com
secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
expand=computerStatus

headers = {
    'Content-Type': 'application/json',
    'api-secret-key': secret,
    'api-version': 'v1',
}

params = (
    ('expand', 'expand'),
)

data = '{"maxItems": 10,"searchCriteria": [{"fieldName": "hostName","stringTest": "equal", "stringValue": ip}]}'

response = requests.post('https://url/api/computers/search?expand=expand', headers=headers, params=params, data=data)

print(response)

<Response [400]>

我收到了400个响应..不确定我在语法中缺失了什么……

EN

回答 1

Stack Overflow用户

发布于 2020-07-07 23:30:05

数据需要是一个字典,试试这个:

代码语言:javascript
复制
data = {
    "maxItems": 10, 
    "searchCriteria": [{"fieldName": "hostName","stringTest": "equal", "stringValue": ip}]
    }

还可以将params转换为字典:

代码语言:javascript
复制
 params = {"expand" : expand}

在发帖时:

代码语言:javascript
复制
response = requests.post(f'https://{url}/api/computers/search', headers=headers, params=params, data=data)

### or alternatively you can

response = requests.post(f'https://{url}/api/computers/search?expand={expand}', headers=headers, data=data)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62778458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档