Неподдерживаемая ошибка типа носителя для request.post - PullRequest
0 голосов
/ 27 января 2020

Я работаю над вызовом API с python. Здесь у меня есть параметры в формате json, сгенерированные на веб-сайте, к которому я пытаюсь получить доступ. Но когда я пытаюсь запустить программу, я получаю ошибку 415: unsupported Media Type. Не уверен, что я делаю неправильно, поскольку я использую параметры, сгенерированные веб-сайтом.

Это мой код.

def jprint(obj):
    text = json.dumps(obj, sort_keys=True, indent=4)
    print(text)


url = 'https://einv-apisandbox.nic.in/gstvital/api/auth'

parameters = {
  "header": {
    "ClientID": "TheClientIDGoesHere",
    "ClientSecret": "TheClientSecretGoesHere"
  },

  "data": {
    "UserName": "Username",
    "Password": "Password",
    "AppKey": "AppKey",
    "ForceRefreshAccessToken": "false"
  }
}

response = requests.post(url, params=parameters)

jprint(response.json())

В приведенном выше коде я удалил фактический параметры и заменил их фиктивным текстом. Но когда я пробую их с фактическими параметрами, я получаю следующую ошибку

{
    "status": 415,
    "title": "Unsupported Media Type",
    "traceId": "|df46105a-49e1b43f80675626.",
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13"
}

Одна вещь, которую я изменил, был этот код "ForceRefreshAccessToken": "false". В сгенерированном json коде false не было внутри кавычек

Не уверен, что я делаю неправильно. Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 27 января 2020
import requests
import json


def jprint(obj):
    text = json.dumps(obj, sort_keys=True, indent=4)
    print(text)


url = 'https://einv-apisandbox.nic.in/gstvital/api/auth'

parameters = {
    "header": {
        "ClientID": "TheClientIDGoesHere",
        "ClientSecret": "TheClientSecretGoesHere"
    },

    "data": {
        "UserName": "Username",
        "Password": "Password",
        "AppKey": "AppKey",
        "ForceRefreshAccessToken": False
    }
}

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

response = requests.post(url, data=parameters, headers=hdr)

print(response.status_code)

print(response.json())

Ошибка 415 указывает на то, что тип носителя не поддерживается сайтом. Это можно исправить, явно указав в заголовке, что тип содержимого будет JSON. hdr = {"Content-Type": "application/json"} Код ответа с сайта "200: ОК", поэтому ваш запрос работает.

...