python запрос эквивалентной следующей команды curl put - PullRequest
0 голосов
/ 13 апреля 2020

что является python эквивалентом запроса следующей команды curl put.

curl --location --request PUT 'https://xxxx/ejbca/ejbca-rest-api/v1/certificate/CN=CompanyName Issuing CA1 - PoC/69108C91844E53258C646444E0FF0FB797349753/revoke?reason=KEY_COMPROMISE' \
--header 'Content-Type: application/json' \
--data-raw ''

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Я не использовал правильный шаблон URL, теперь я использую это, я могу сделать все необходимое.

import requests

url = f'https://someserver.dv.local/ejbca/ejbca-rest-api/v1/certificate/CN=SomeCompany%20Name%20Issuing%20CA1%20-%20PoC/8188/revoke?reason=KEY_COMPROMISE'
response = requests.put(
    headers={
        'content-type': 'application/json'
        },
    verify=('cacertstruststore.pem'),
    cert=('restapi-cert.pem', 'restapi-key.key')
    )
json_resp = response.json()
print(json_resp)

Ответ

{'issuer_dn': 'CN=SomeCompany Name CA1 - PoC', 'serial_number': '8188', 'revocation_reason': 'KEY_COMPROMISE', 'revocation_date': '2020-04-14T18:06:33Z', 'message': 'Successfully revoked', 'revoked': True}
0 голосов
/ 13 апреля 2020

Попробуйте:

import requests

headers = {
    'Content-Type': 'application/json',
}

params = (
    ('reason', 'KEY_COMPROMISE'),
)

response = requests.get('https://xxxx/ejbca/ejbca-rest-api/v1/certificate/CN=CompanyName%20Issuing%20CA1%20-%20PoC/69108C91844E53258C646444E0FF0FB797349753/revoke', headers=headers, params=params)

#NB. Original query string below. It seems impossible to parse and
#reproduce query strings 100% accurately so the one below is given
#in case the reproduced version is not "correct".
# response = requests.get('https://xxxx/ejbca/ejbca-rest-api/v1/certificate/CN=CompanyName Issuing CA1 - PoC/69108C91844E53258C646444E0FF0FB797349753/revoke?reason=KEY_COMPROMISE', headers=headers)

Существует библиотека, которая поддерживает эти преобразования.

pip install uncurl
...