Python Post запрос к API - PullRequest
       48

Python Post запрос к API

1 голос
/ 11 ноября 2019

это может быть простой вопрос, но я не смог найти проблему, почему я не могу позвонить по запросу в api url. У меня есть перекрестная проверка с похожими вопросами, но у меня все еще есть проблема.

Это скрипт

import requests
import json

#API details
url = "http://192.168.1.100:9792/api/scan"
body = {"service":"scan", "user_id":"1", "action":"read_all", "code":"0"}
headers = {'Content-Type': 'application/json'}

#Making http post request
response = requests.post(url, headers=headers, data=body, verify=False)
print(response)

#Decode response.json() method to a python dictionary for data process utilization
dictData = response.json()
print(dictData)

with open('scan.json', 'w') as fp:
  json.dump(dictData, fp, indent=4, sort_keys=True)

Ошибка получения

 raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

print (response) получил возврат

<Response [200]>

, если я запустил curl, как показано ниже, ок ... и он вернет данные из API-запроса post

curl --header "Content-Type: application/json" --request POST --data '{"service":"scan","user_id":"1","action":"read_all","code":"0"}' http://192.168.1.100:9792/api/scan

, используя curl, ок ... но когда я использую запросы / jsonУ питона есть проблема ... Я думаю, что я мог бы пропустить что-то здесь, где я не в состоянии обнаружить. Пожалуйста, помогите и укажите мне правильный путь. Спасибо.

1 Ответ

1 голос
/ 11 ноября 2019

У меня были похожие ошибки, и сброс данных решил проблему. Попробуйте вместо этого передать свое тело как свалку:


import requests
import json

#API details
url = "http://192.168.1.100:9792/api/scan"
body = json.dumps({"service":"scan", "user_id":"1", "action":"read_all", "code":"0"})
headers = {'Content-Type': 'application/json'}

#Making http post request
response = requests.post(url, headers=headers, data=body, verify=False)

print(response.json())
...