我正在使用以下API将数据加载到我们的应用程序中
根据规范,它使用YYYY-MM-DD格式的日期作为输入。
我正在尝试Deserialize
返回的JSON字符串,但由于数据量很大;我收到连接失败错误。
有没有更好的方法(可能是异步的)来做同样的事情?我尝试过搜索,但大部分解决方案都涉及.NET
。
代码:
<cfhttp url="https://rec-registry.gov.au/rec-registry/app/api/public-register/certificate-actions"
result ="RecRegistry_JSON"
method="GET" getasbinary="never">
<cfhttpparam name="Date" value="#Dateformat(DateAdd("d",-3, Now()),"YYYY-MM-DD")#" type="URL">
</cfhttp>
<cfset recJSON = DeserializeJSON(RecRegistry_JSON.FileContent)>
<cfdump var="#recJSON#">
编辑1:根据Adam Cameron的评论,问题在于cfdump
因为无法转储大量数据。 deserialisation
可以很好地处理20 MB的数据。
答案 0 :(得分:0)
在本地运行代码时,我遇到的问题是HTTP请求超时。为了解决这个问题,我在cfhttp标记中添加了一个timeout参数,并在页面顶部添加了一个cfsetting标记。
<cfsetting requestTimeout="9000">
<cfhttp
url="https://rec-registry.gov.au/rec-registry/app/api/public-register/certificate-actions"
result ="RecRegistry_JSON"
method="GET"
getasbinary="never"
timeout="9000"
file="response.json"
path="#expandPath('/')#"
>
<cfhttpparam name="Date" value="#Dateformat(DateAdd("d",-3, Now()),"YYYY-MM-DD")#" type="URL">
</cfhttp>
我还分割了下载文件和解析文件的功能,因此我不必等待下载来测试解析。请注意cfhttp标记上的文件和路径设置。
不知道您打算如何处理数据,您可能最好获得较小的块,例如一次获得1天并在将其放入本地解决方案后编译这些结果。