Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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
API POST请求适用于PowerShell,但不适用于Python_Python_Json_Python Requests - Fatal编程技术网

API POST请求适用于PowerShell,但不适用于Python

API POST请求适用于PowerShell,但不适用于Python,python,json,python-requests,Python,Json,Python Requests,我有一个本地API,我想用非常基本的POST请求来测试它。PowerShell测试脚本工作得非常好,但Python测试脚本(应该以同样的方式工作)却不能 PowerShell:api\u post.ps1 Pythonapi_post.py API返回的错误没有意义,因为API仍处于早期测试阶段 注意:我没有在这里标记PowerShell,因为PowerShell示例仅显示POST通常可以工作请求。POST的数据参数不带字符串,您应该直接将dict传递给它:) 请参阅在不使用json.dum

我有一个本地API,我想用非常基本的POST请求来测试它。PowerShell测试脚本工作得非常好,但Python测试脚本(应该以同样的方式工作)却不能


PowerShell:
api\u post.ps1
Python
api_post.py

API返回的错误没有意义,因为API仍处于早期测试阶段


注意:我没有在这里标记PowerShell,因为PowerShell示例仅显示POST通常可以工作

请求。POST
数据
参数不带字符串,您应该直接将dict传递给它:)


请参阅

在不使用
json.dumps的情况下尝试,即
data=PAYLOAD
感谢您的快速回复。不幸的是,如果我直接传递数据,就会出现错误<代码>值错误:太多的值无法解包(预期为2)
@Razorfen噢,这是因为我相信您的负载是一个列表。可能尝试
data=PAYLOAD[0]
?我尝试了-结果与我最初得到的错误相同。我猜这是因为API需要以数组/列表的形式提供有效负载。我的PowerShell脚本直到我使用上面类似的
ConvertTo Json
创建Json ArrayId才成功,您是否尝试Json=payload?在Python中使用json可以使用列表。此外,如果您这样做,则不需要指定标头。另请参见此处:
$url = "http://test.local/"

$headers = @{"Content-Type" = "application/json"}

$payload = @(
    @{
        "Order_Number" = "123-vfs"
        "SKU"          = 123
        "Company"      = "Test Ltd"
    }
)

$payload = ConvertTo-Json -InputObject $payload

# Works exactly as it should
Invoke-RestMethod -Uri $url -Method "POST" -Headers $headers -Body $payload
import json
import requests

URL = "http://test.local/"

HEADERS = {
    "Content-Type": "application/json"
}

PAYLOAD = [
    {
        "Order_Number": "123-vfs",
        "SKU": 123,
        "Company": "Test Ltd",
    }
]

# Returns an error
requests.post(URL, headers=HEADERS, data=json.dumps(PAYLOAD))
requests.post(URL, headers=HEADERS, data=PAYLOAD[0])