Перевод HTTP-запроса Python в curl - PullRequest
0 голосов
/ 27 марта 2019

У меня есть код ниже в Python, который делает запрос POST для токена OAuth2.Он использует базовую аутентификацию.Код работает нормально, но я бы хотел «перевести его» в curl.

Код:

#Authorization: Basic c29tZV91c2VyOnBhc3M=
#some_user:pass = base64decode('c29tZV91c2VyOnBhc3M=') 

def get_access_token():
burp0_url = "https://myurl:443/api/oauth/token"
burp0_headers = {"Accept": "application/json", "Authorization": "Basic c29tZV91c2VyOnBhc3M=", "Content-Type": "application/x-www-form-urlencoded", "Connection": "close", "Accept-Encoding": "gzip, deflate", "User-Agent": "okhttp/3.0.1"}
burp0_data={"grant_type": "client_credentials"}
return json.loads(requests.post(burp0_url, headers=burp0_headers,
data=burp0_data).text)['access_token']

Я предположил, что это будет выглядеть примерно так:

curl -v -XPOST -H 'Authorization: Basic c29tZV91c2VyOnBhc3M=' --header 'Accept: application/json' --header 'Connection: close' --header 'Accept-Encoding: gzip, deflate' --header 'User-Agent: okhttp/3.0.1' --data '{"grant_type": "client_credentials"}' https://myurl:443/api/oauth/token

Однако я продолжаю получать HTTP / 1.1 400 и следующее* Ошибка написания тела (0! = 10)* Не удалось записать данные* остановил поток паузы!* Закрытие соединения 0Вы можете мне помочь?

1 Ответ

0 голосов
/ 27 марта 2019

Похоже, вы забыли скопировать заголовок "Content-Type": "application/x-www-form-urlencoded" в команду curl.

Это также предполагает, что данные представлены не в виде строки JSON, как вы сейчас делаете, а в виде данных обычной формы. Вы можете использовать -F 'grant_type=client_credentials' для этого и удалить аргумент --data.

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