Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中如何在POST请求中将查询作为主体发送_Python_Python 2.7_Python Requests_Artifactory - Fatal编程技术网

在Python中如何在POST请求中将查询作为主体发送

在Python中如何在POST请求中将查询作为主体发送,python,python-2.7,python-requests,artifactory,Python,Python 2.7,Python Requests,Artifactory,我正在尝试将一个人工查询作为主体发送给POST方法。我总是以400作为响应(这是一个错误的请求)。这是我的代码。我在这里做错了什么。查询看起来不错,因为它使用curl和Groovy工作 host = http://artifactory.com/artifactory build_url = '%s/api/search/aql' % (host) payload='{items.find({"repo":"lib","type":"file","path":"builds"}).include

我正在尝试将一个人工查询作为主体发送给POST方法。我总是以400作为响应(这是一个错误的请求)。这是我的代码。我在这里做错了什么。查询看起来不错,因为它使用curl和Groovy工作

host = http://artifactory.com/artifactory
build_url = '%s/api/search/aql' % (host)
payload='{items.find({"repo":"lib","type":"file","path":"builds"}).include("*"}'
response = requests.post(build_url,data=payload,auth=(user:pwd))
print response
输出: 响应[400]

我使用的是Python2.7,下面是RESTAPI的详细信息

Artifactory Query Language (AQL) REST API
Since: 3.5.0
Security: Requires an authenticated user
Usage: POST /api/search/aql
Consumes: text/plain

--提前谢谢

我想你只是在
include(“*”
之后的末尾缺少了一个括号。试试这个:

payload='{items.find({"repo":"lib","type":"file","path":"builds"}).include("*")}'

编辑:根据讨论,问题在于缺少身份验证。

这只是一个输入错误。我试图在粘贴到此处时简化查询,是的,我尝试了上面的查询,您粘贴了。这不起作用。post方法是否有其他方式发送此类消息?我不确定您是否需要其他方式进行调用,这是一个应该可以正常工作。请求或服务器处理肯定存在其他固有的问题。是否有响应正文?您是否可以发布完整的响应,也许?我建议您查看服务器日志,如果您在那里找不到任何内容,也许您应该制作一些。服务器拒绝您的请求,并且第一次我要做的是找出原因。可能是因为它希望您不提供某些请求标题?我知道了问题。感谢您的建议。问题是我用于从artifactory中的特定存储库请求内容的用户没有必要的权限。在我向该用户授予从该存储库读取内容的权限之后存储库,一切看起来都很好。在这种情况下,我认为您从服务器返回的响应是错误的。在这种情况下,似乎应该返回401状态代码。在这种情况下,返回正确的状态代码将对您有很大帮助。我已编辑了答案以包含解决方案,如果您认为正确,请接受嗅它。