On Tuesday, December 20, 2016 at 7:28:47 AM UTC-5, Akbar Shaikh wrote: > import io > import csv > import glob > import os.path > import requests > import subprocess > import urllib.request > import json > import time > import xlwt > import xlrd > import datetime > from datetime import date, timedelta > > def main(): > """ Run the whole toolchain for all accounts. """ > _clean() > > payload = {'client_id':'xxxx' , > 'client_secret':'xxxx', > 'grant_type':'client_credentials'} > headers1 = { > 'Content-Type':'application/json' > } > > r = requests.post('https://auth.smaato.com/v2/auth/token/ > HTTP/1.1',params=payload,auth=('username', 'password'),headers = headers1,) > > a_token = r.json() > > ACCESSTOKEN = a_token['access_token'] > print ('Bearer ' + ACCESSTOKEN) > > content2 = { > 'client_id':'xxxx' , > 'client_secret':'xxxx', > 'grant_type':'client_credentials', > 'Authorization': 'Bearer' + ACCESSTOKEN, > 'POST':'https://api.smaato.com/v1/reporting/ HTTP/1.1', > 'Content-Type':'application/json', > 'Host': 'api.smaato.com', > 'criteria':{"dimension":"ApplicationId","child":"null"}, > 'kpi': {"clicks : true"}, > > 'period':{"period_type":"fixed","start_date":"2016-12-7","end_date":"2016-12-7"} > } > > headers2 = { > 'client_id':'xxxx' , > 'client_secret':'xxxx', > 'grant_type':'client_credentials', > 'Authorization': 'Bearer' + ACCESSTOKEN, > 'Username':'Username', > 'Password':'Password', > 'Content-Type': 'application/json', > 'Host': 'api.smaato.com', > } > s = > requests.post('https://api.smaato.com/v1/reporting/',params=content2,auth=('username', > 'password'), headers = headers2) > print(s.content) > > def _clean(): > """ Cleans old data files. > """ > for f in glob.glob('./Numbers *.csv'): > os.remove(f) > > if '__main__' == __name__: > main() > ------------------------------------------------------------------------- > Error: Traceback (most recent call last): > File "C:\Users\xxxx\Desktop\Smaato Akbar.py", line 66, in <module> > main() > File "C:\Users\xxxx\Desktop\Smaato Akbar.py", line 28, in main > a_token = r.json() > File > "C:\Users\xxx\AppData\Local\Programs\Python\Python35-32\lib\site-packages\requests\models.py", > line 850, in json > return complexjson.loads(self.text, **kwargs) > File > "C:\Users\xxxx\AppData\Local\Programs\Python\Python35-32\lib\site-packages\simplejson\__init__.py", > line 516, in loads > return _default_decoder.decode(s) > File > "C:\Users\xxxx\AppData\Local\Programs\Python\Python35-32\lib\site-packages\simplejson\decoder.py", > line 374, in decode > obj, end = self.raw_decode(s) > File > "C:\Users\xxxx\AppData\Local\Programs\Python\Python35-32\lib\site-packages\simplejson\decoder.py", > line 404, in raw_decode > return self.scan_once(s, idx=_w(s, idx).end()) > simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
That error means you are trying to decode an empty string. Most likely, your request failed, and there's a status code that will give you a clue as to why it failed. You should check the success of the request before trying to use the results. >From the docs >(http://docs.python-requests.org/en/master/user/quickstart/#json-response-content): > To check that a request is successful, use r.raise_for_status() or check > r.status_code is what you expect. --Ned. -- https://mail.python.org/mailman/listinfo/python-list