Формат python Запрос PATCH от команды curl - PullRequest
0 голосов
/ 13 июля 2020

У меня есть команда curl, которую я могу запустить с моей локальной машины, и она работает, но передача ее в сценарий python вызывает у меня трудности. Вот работающая команда curl:

curl -X PATCH "http://localhost: 9999 / pins / 1" -H "Content-Type: application / json" -d "{" state ":" on "}"

И вот что у меня есть до python запроса:

import requests

url = 'http://localhost:9999/pins/1'
payload = {'state':'on'}
head = {'Content-Type':'application/json'}

r = requests.patch(url, payload, headers=head)

Но я получаю ответ 400. В любом направлении?

Кроме того, если я отформатирую его как

r = requests.patch(url, data=payload)

, я получу код ответа 500. Также следует отметить: я могу легко запустить простой запрос на получение, запустив что-то вроде

r = requests.get(url)

Ответы [ 2 ]

0 голосов
/ 13 июля 2020
import requests

url = 'http://localhost:9999/pins/1'
payload = {'state':'on'}
head = {'Content-Type':'application/json'}

r = requests.patch(url, json=payload)

измените это r = requests.patch(url, data=payload) на r = requests.patch(url, json=payload)

0 голосов
/ 13 июля 2020

Попробуйте следующее, чтобы убедиться, что ваша полезная нагрузка действительна json.

import requests
import json

url = 'http://localhost:9999/pins/1'
payload = {'state':'on'}
head = {'Content-Type':'application/json'}

r = requests.patch(url, data=json.dumps(payload), headers=head)
...