web-dev-qa-db-fra.com

Passer un appel API Python avec une API nécessitant un jeton porteur)

Vous recherchez de l'aide pour intégrer un appel d'API JSON dans un programme Python.

Je cherche à intégrer l’API suivante dans un programme Python .py) pour lui permettre d’être appelée et d’imprimer la réponse.

Les instructions de l'API indiquent qu'un jeton de support doit être généré pour permettre les appels à l'API, ce que j'ai fait avec succès. Cependant, je ne suis pas sûr de la syntaxe pour inclure ce jeton en tant qu'authentification de jeton de support dans Python.

Je peux mener à bien la demande ci-dessus en utilisant cURL avec un jeton inclus. J'ai essayé les itinéraires "urllib" et "demandes" mais en vain.

Détails complets de l'API: Documentation de l'API IBM X-Force Exchange - Réputation IP

47
user4657

Cela signifie simplement qu'il s'attend à ce que comme clé dans vos données d'en-tête

import requests
endpoint = ".../api/ip"
data = {"ip": "1.1.2.3"}
headers = {"Authorization": "Bearer MYREALLYLONGTOKENIGOT"}

print(requests.post(endpoint, data=data, headers=headers).json())
76
Joran Beasley

Le jeton doit être placé dans un en-tête d'autorisation selon le format suivant:

Autorisation: porteur [Token_Value]

Code ci-dessous:

import urllib2
import json

def get_auth_token()
    '''
    get an auth token
    '''
     req=urllib2.Request("https://xforce-api.mybluemix.net/auth/anonymousToken")
     response=urllib2.urlopen(req)
     html=response.read()
     json_obj=json.loads(html)
     token_string=json_obj["token"].encode("ascii","ignore")
     return token_string

def get_response_json_object(url, auth_token)
    '''
      returns json object with info
    '''
    auth_token=get_auth_token()
    req=urllib2.Request(url, None, {"Authorization": "Bearer %s" %auth_token})
    response=urllib2.urlopen(req)
    html=response.read()
    json_obj=json.loads(html)
    return json_obj
15
DSG