Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 requests.post()返回None_Python_Json_Rest_Post_Python Requests - Fatal编程技术网

Python requests.post()返回None

Python requests.post()返回None,python,json,rest,post,python-requests,Python,Json,Rest,Post,Python Requests,我知道之前讨论过这个问题,但我无法找到适合我的用例的有效解决方案 我们有一个返回数据的内部服务器(抱歉,没有可用的外部地址)。在端点上调用POST方法将返回JSON。我试着用邮件检查是否收到了有效的回复。当使用邮递员时,我收到了预期的回复。不需要身份验证 但是,Python客户端无法返回数据,并收到一个空响应 代码段: import json import requests URL_PATH = "https://our.internal.server.rest.address" HEADER

我知道之前讨论过这个问题,但我无法找到适合我的用例的有效解决方案

我们有一个返回数据的内部服务器(抱歉,没有可用的外部地址)。在端点上调用POST方法将返回JSON。我试着用邮件检查是否收到了有效的回复。当使用邮递员时,我收到了预期的回复。不需要身份验证

但是,Python客户端无法返回数据,并收到一个空响应

代码段:

import json
import requests

URL_PATH = "https://our.internal.server.rest.address"
HEADERS = {
    'Content-Type': 'application/json'
}

DATA = '''{
    "method"  : "object.read",
    "params"  : "",
    "id"      : 142
}'''

S = requests.session()
R = S.post(URL_PATH, headers=HEADERS, json=DATA)

if R.ok:
    print("Type: ", R.headers["Content-Type"])
    print("Text: ", str(R.text))
    print("JSON: ", R.json())
    print("Content", R.content)
else:
    R.raise_for_status()

S.close()
输出为:

类型:application/json
文本:空
JSON:无
内容b'null'

你知道我的Python代码哪里做错了,为什么没有返回数据,但在使用单独的工具时是这样吗

我还尝试在post()中使用data=:


或者直接使用requests.post()跳过会话()。

我认为您的
数据
变量应该是dict而不是字符串?

我认为您的
数据
变量应该是dict而不是字符串?

1)用不同的端点尝试相同的代码

这意味着邮递员发送的确切参数不会添加到客户端中

尝试使用apachetcpmon来监听来自postman和python客户端的请求

这将帮助您识别缺少的参数

1)用不同的端点尝试相同的代码是有效的

这意味着邮递员发送的确切参数不会添加到客户端中

尝试使用apachetcpmon来监听来自postman和python客户端的请求


这将帮助您识别缺少的参数

感谢大家的快速支持。这是最终版本,效果很好

import json
import requests

URL_PATH = "https://our.internal.server.rest.address"
HEADERS = {
    'Content-Type': 'application/json'
}

DATA = {
    "method"  : "object.read",
    "params"  : "",
    "id"      : 142
}

# R = requests.request("POST", URL_PATH, data=payload, headers=HEADERS)  # suggested by Postman
R = requests.post(URL_PATH, json=DATA, headers=HEADERS)

if R.ok:
    print("JSON: ", R.json())
else:
    R.raise_for_status()

感谢大家的快速支持。这是最终版本,效果很好

import json
import requests

URL_PATH = "https://our.internal.server.rest.address"
HEADERS = {
    'Content-Type': 'application/json'
}

DATA = {
    "method"  : "object.read",
    "params"  : "",
    "id"      : 142
}

# R = requests.request("POST", URL_PATH, data=payload, headers=HEADERS)  # suggested by Postman
R = requests.post(URL_PATH, json=DATA, headers=HEADERS)

if R.ok:
    print("JSON: ", R.json())
else:
    R.raise_for_status()

我也遇到了同样的问题,我尝试了很多方法。结果证明,这是数据格式的问题。当我直接发送字典时,响应为空(状态代码为200)。当我发送一个json字符串作为数据时,我得到了预期的响应

import json

DATA = {
    "method"  : "object.read",
    "params"  : "",
    "id"      : 142
}

# R = requests.request("POST", URL_PATH, data=payload, headers=HEADERS)  # suggested by Postman
R = requests.post(URL_PATH, json=json.dumps(DATA), headers=HEADERS)

我也遇到了同样的问题,我尝试了很多方法。结果证明,这是数据格式的问题。当我直接发送字典时,响应为空(状态代码为200)。当我发送一个json字符串作为数据时,我得到了预期的响应

import json

DATA = {
    "method"  : "object.read",
    "params"  : "",
    "id"      : 142
}

# R = requests.request("POST", URL_PATH, data=payload, headers=HEADERS)  # suggested by Postman
R = requests.post(URL_PATH, json=json.dumps(DATA), headers=HEADERS)

你能发送任何请求吗?尝试对另一个URI执行一个简单的
GET
请求,您是否得到了正确的响应?不确定,但Postman肯定允许您将查询导出为curl命令。你能把它贴在这里吗?因此,我们可以检查是否有任何不同,这是一个伟大的建议!是的,我找到了菜单选项extract the request as code for Python。知道吗?现在它工作了!不知道到底是什么错误。邮递员通过response=requests.request(“POST”,url,data=payload,headers=headers)发送请求,但requests.POST()也起作用。我会把剪掉的工作放在下面…你能发送任何请求吗?尝试对另一个URI执行一个简单的
GET
请求,您是否得到了正确的响应?不确定,但Postman肯定允许您将查询导出为curl命令。你能把它贴在这里吗?因此,我们可以检查是否有任何不同,这是一个伟大的建议!是的,我找到了菜单选项extract the request as code for Python。知道吗?现在它工作了!不知道到底是什么错误。邮递员通过response=requests.request(“POST”,url,data=payload,headers=headers)发送请求,但requests.POST()也起作用。我将删除下面剪下的工作…因此具体建议是从
数据
作业中删除两个
'
。因此具体建议是从
数据
作业中删除两个
'