Как исправить ошибку «Bad Request» в Python 400 с почтовыми запросами? - PullRequest
0 голосов
/ 11 ноября 2019

Я не могу получить ответ на мой почтовый запрос. Это дает мне 400 ошибок. в то время как в почтальоне, он работает нормально.

Код ниже

import requests
from urllib3.exceptions import InsecureRequestWarning

url = ""

payload = """[{{\n  \"dateOfBirth\": \"{}\",\n  \"nationalIdentityNo\": \"{}\"\n}}]"""

headers = {
    'x-req-id': "89567890987610",
    'x-channel-id': "MB",
    'x-sub-channel-id': "MB",
    'x-country-code': "PK",
    'x-customer-type': "C",
    'Authorization': "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJhZGlsIn0.mRSZXF0glqRPyo2h15jHd51JwCeEnSUIBmYuTaAzmrQ",
    'accept': "application/json",
    'Content-Type': "application/json",
    'User-Agent': "PostmanRuntime/7.19.0",
    'Cache-Control': "no-cache",
    'Postman-Token': "566b2e63-9320-4a59-9524-f480f33fd62f,f7ba71fd-503a-451c-8817-2198f09c1d0c",
    'Host': "*********",
    'Accept-Encoding': "gzip, deflate",
    'Content-Length': "75",
    'Connection': "keep-alive",
    'cache-control': "no-cache"
}

requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
response = requests.request("POST", url, data=payload.format(new_date, IDNO), headers=headers, verify=False)
print(response.status_code)
print(response.text)

Это результат, который я получаю.

400

<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Bad Request

Заранее спасибо!

Ответы [ 2 ]

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

https://www.w3schools.com/python/ref_requests_post.asp

url = "string"
payload = [{'key':'value'},]  # a JSON object
headers = {'key':'value'}  # a dictionary
response = requests.post(url, data=payload, headers=headers)

Пробовали ли вы это вместо использования строкового объекта JSON в качестве полезной нагрузки?

0 голосов
/ 11 ноября 2019

Ваш headers JSON неверен. Ключ имеет одинарные кавычки. Правильный JSON требует "key":"value" в двойных кавычках, если значение не является целым числом! Попробуйте изменить все кавычки на двойные в заголовке.

Кроме того, ваша полезная нагрузка довольно запутанная

payload = """[{{\n \"dateOfBirth\": \"{}\",\n \"nationalIdentityNo\": \"{}\"\n}}]"""

Просто сделайте это в своем ответе напрямую data='{{"dateOfbirth": {},"nationalIdentityNo": {}}}'.format(new_date, IDNO)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...