Я пытаюсь отправить простой POST для API.

import requests
url ="http://someapi/v1/auth"
payload = {'username': '', 'password': ''}
s1 = requests.post(url, headers={"content-type":"application/x-www-form-urlencoded"}, data=json.dumps(payload))  
print s1.status_code

Я продолжаю получать код состояния 401.

Те же шаги Хорошо работает в POSTMAN.

enter image description here

enter image description here

Любые идеи / указатели?

1
ProgSky 30 Авг 2017 в 23:33

3 ответа

Лучший ответ

Размещать данные в необработанном формате.

payload = "username=;password=;"

s1 = requests.post(
    url, 
    headers={"content-type":"application/x-www-form-urlencoded"},
    data=payload)

FWIW, вы можете нажать Код под кнопкой Сохранить в правом верхнем углу Почтальона, чтобы просмотреть код на нескольких языках по вашему запросу. ,

2
Oluwafemi Sule 30 Авг 2017 в 20:40

Этот код работал для меня.

import requests
from requests_ntlm import HttpNtlmAuth
payload = "username=;password=;"
s= requests.post(
        "http://someapi/v1/auth", 
        headers={"content-type":"application/x-www-form-urlencoded"},
        data = payload, 
        auth=HttpNtlmAuth('',''))
print s.status_code
1
ProgSky 30 Авг 2017 в 22:36

Это будет работать, только если API принимает также тело JSON. В противном случае вы можете использовать ответ @Oluwafemi Sule.

import requests
url ="http://someapi/v1/auth"
payload = {'username': '', 'password': ''}
s1 = requests.post(url, headers={"content-type":"application/json"}, data=json.dumps(payload))  
print s1.status_code
1
M07 30 Авг 2017 в 20:47