Mencari bantuan untuk mengintegrasikan panggilan JSON API ke dalam program Python.
Saya ingin mengintegrasikan API berikut ke dalam program .py Python untuk memungkinkannya dipanggil dan tanggapannya akan dicetak.
Panduan API menyatakan bahwa token pembawa harus dibuat untuk memungkinkan panggilan ke API, yang telah saya lakukan dengan sukses. Namun saya tidak yakin sintaks untuk memasukkan token ini sebagai otentikasi token pembawa dalam permintaan Python API.
Saya berhasil menyelesaikan permintaan di atas menggunakan cURL dengan token disertakan. Saya telah mencoba rute "urllib" dan "permintaan" tetapi tidak berhasil.
Detail API lengkap: Dokumentasi API IBM X-Force Exchange - Reputasi IP
Traceback (most recent call last): File "bearerreturn.py", line 6, in <module> print requests.post(endpoint,data=data,headers=headers).json() TypeError: 'dict' object is not callable
Kode Di Bawah:import requests endpoint = "https://xforce-api.mybluemix.net:443/api/ip" data = {"ip":"1.1.2.3"} headers = {"Bearer token":"TOKEN WAS INSERTED HERE"} print requests.post(endpoint,data=data,headers=headers).json()
Ada Ide?json
adalah perintah dalam versi Anda dan bukan fungsirequests.post(...).json
... jangan menyebutnya{u'error': u'Not authorized. Access is only allowed via https://exchange.xforce.ibmcloud.com/#/'}
Ini sama seperti jika saya menekan URL langsung di browser. Apakah saya kehilangan sesuatu dengan token atau cara endpoint dikonfigurasi? Kode:import requests endpoint = "https://xforce-api.mybluemix.net:443/ipr/" data = {"ip":"1.1.2.3"} headers = {"Bearer token":"TOKEN_HERE"} print requests.post(endpoint,data=data,headers=headers).json()
Jika Anda menggunakan
requests
modul, opsi alternatifnya adalah menulis kelas autentikasi , seperti yang dibahas dalam " Bentuk Otentikasi Baru ":import requests class BearerAuth(requests.auth.AuthBase): def __init__(self, token): self.token = token def __call__(self, r): r.headers["authorization"] = "Bearer " + self.token return r
dan kemudian dapatkah Anda mengirim permintaan seperti ini
response = requests.get('https://www.example.com/', auth=BearerAuth('3pVzwec1Gs1m'))
yang memungkinkan Anda menggunakan
auth
argumen yang sama seperti autentikasi dasar, dan dapat membantu Anda dalam situasi tertentu.sumber
Token harus ditempatkan di header Otorisasi sesuai dengan format berikut:
Otorisasi: Bearer [Token_Value]
Kode di bawah ini:
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
sumber
req = urllib.request.Request(urlstr, None, {"Authorization": "Bearer %s" % enc_authstr}) response = urllib.request.urlopen(req)