通过使用python代码,我试图从json文件中读取数据并通过API上传。但是我得到HTTP错误5000.以下是我的代码:
url = 'http://sipdev1.vbi.vt.edu:8080/EpiViewer/epiviewer/services/uploadGraphData'
for i in json_file_name:
json_data = open (i, 'r')
lines=json_data.readlines()
req = urllib2.Request(url)
req.add_header('Content-Type','application/json')
data = json.dumps(lines)
response = urllib2.urlopen(req,data)
这是错误:
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: Internal Server Error
输入文件示例:
{
"username": "xxxxx",
"password": "yyyyy",
"timeSeriesName": "Liberia_01-18-2015",
"dataType": "Cases",
"plotType": "Cumulative",
"filename": "C_C.csv",
"dateFormat": "MM-dd-yy",
"forecastedOn": "01/18/2015",
"visibility": "Public",
"data": {
"01-25-2015":"26 38 14",
"02-01-2015":"22 33 11",
"02-08-2015":"19 32 6",
"02-15-2015":"17 32 2",
"02-22-2015":"15 18 12",
"03-01-2015":"14 26 2"
}
}
我认为代码无法正确解析我的输入文件。你对这个解决方案有什么想法吗?
答案 0 :(得分:1)
您的文件已编码为JSON 。您不需要再次编码。发送文件不变:
for name in json_file_name:
with open(name) as json_data:
data = json_data.read()
req = urllib2.Request(url, data, {'Content-Type': 'application/json'})
response = urllib2.urlopen(req)
答案 1 :(得分:1)
500错误表示服务器进程崩溃,试图解析您的输入。您的数据要么具有额外的密钥,要么没有足够的密钥,或者您的数据的格式是服务器未预料到的。
基于: 线= json_data.readlines() 和 data = json.dumps(lines)
您好像没有将数据转换为json对象,因此无法从json转储它。尝试更换:
json_data = open (i, 'r')
lines=json_data.readlines()
使用:
with open(i) as data_file:
json_data = json.load(data_file)
您还应该使用比i更好的名称,并尝试/捕获与格式不正确的json文件相关的错误。
此外,您还可以更轻松地找到用于http API的Requests库 - 请参阅:http://docs.python-requests.org/en/latest/