我正在尝试从需要发布到ajax脚本的网站中提取一些信息。
我正在尝试创建一个自动脚本但是我一直遇到HTTP 500错误。这与我从
中做的不同数据拉动相反url = 'http://www.ise.com/ExchangeDataService.asmx/Get_ISE_Dividend_Volume_Data/'
paramList = ''
paramList += '"' + 'dtStartDate' + '":07/25/2014"'
paramList += ','
paramList += '"' + 'dtEndDate' + '":07/25/2014"';
paramList = '{' + paramList + '}';
response = requests.post(url, headers={
'Content-Type': 'application/json; charset=UTF-8',
'data': paramList,
'dataType':'json'
})
我想知道是否有人对正在发生的事情提出任何建议。这不是专有数据,因为它们允许您以excel格式手动下载它。
答案 0 :(得分:3)
您生成的输入无效JSON。它看起来像这样:
{"dtStartDate":07/25/2014","dtEndDate":07/25/2014"}
如果仔细查看,您会在第一个"
之前发现缺少07
。
这是您不应该尝试通过字符串连接生成JSON的众多原因之一。构建dict
并使用json.dump
,或者如果必须,使用多行字符串作为str.format
或%
的模板。
另外,正如bruno desthuilliers指出的那样,你几乎肯定希望将JSON作为POST主体发送,而不是作为空data
中的POST
标头发送。以错误的方式做到这一点确实恰好与一些后端一起工作,但这只是偶然的,而且这肯定不是你应该依赖的东西。如果您正在与之通话的服务器不是其中一个后端,那么您将发送空字符串作为您的JSON数据,这同样无效。
那么,为什么这会给你一个500错误?可能是因为后端是一些凌乱的PHP代码,它没有无效JSON的错误处理程序,所以它只是没有关于出错的信息,所以服务器除了发送给你一个更好的事情之外什么都做不了通用500错误。
答案 1 :(得分:1)
如果这是您实际代码的复制/粘贴,'data'可能不应该是请求标头的一部分。作为旁注:您没有“发布到ajax脚本”,而是发布到URL。通过网站某些页面上的某些javascript的异步请求调用此URL的事实完全无关紧要。
答案 2 :(得分:0)
这听起来像服务器错误。那么你的帖子可能会因格式化而破坏他们的api。 或者他们的api可能会失败。
http://pcsupport.about.com/od/findbyerrormessage/a/500servererror.htm