我正在尝试使用API下载一些XBRL文件。为了做到这一点,我需要做一个卷曲的请求,就像这样:如何从Java中的curl get请求获取文件?
curl -XGET http://distribution.virk.dk/offentliggoerelser --data-binary @query_regnskaber.json
的想法是,按照我的理解,认为“@ query_regnskaber.json”是一个JSON文件/ JSON查询,我需要发送我的请求,并作为回报,我得到一个XBRL文件/一些数据。我正在使用Java与播放框架(虽然不专门使用播放框架,但也许有人知道一些播放功能来执行卷曲请求)。
这是我当前的代码:
String jsonStr =
"{" +
"\"query\": {" +
"\"bool\": {" +
"\"must\": [" +
"{" +
"\"term\": {" +
"\"offentliggoerelse.dokumenter.dokumentMimeType\": \"application\"" +
"}" +
"}," +
"{" +
"\"term\": {" +
"\"offentliggoerelse.dokumenter.dokumentMimeType\": \"xml\"" +
"}" +
"}," +
"{" +
"\"range\": {" +
"\"offentliggoerelse.offentliggoerelsesTidspunkt\": {" +
"\"from\": \"2016-12-01\"" +
"}" +
"}" +
"}" +
"]," +
"\"must_not\": []," +
"\"should\": []" +
"}" +
"}," +
"\"size\": 1000" +
"}";
String urlStr = "http://distribution.virk.dk/offentliggoerelser";
JSONObject jsonObj = new JSONObject(jsonStr);
URL myURL = new URL(urlStr);
HttpURLConnection urlCon = (HttpURLConnection)myURL.openConnection();
urlCon.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
urlCon.setRequestMethod("GET");
urlCon.setDoInput(true);
urlCon.setDoOutput(true);
urlCon.connect();
OutputStream os = urlCon.getOutputStream();
os.write(jsonObj.toString().getBytes("UTF-8"));
os.close();
BufferedReader br = new BufferedReader(new InputStreamReader((urlCon.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
urlCon.disconnect();
不顺心的事,我不知道是否是因为一些失踪的设置,我的代码或两者兼而有之。我在“urlCon.getInputStream()”调用中遇到了403错误。
我能找到的唯一文档是丹麦文。它还提到它使用ElasticSearch,我假设它用于查找可在“http://distribution.virk.dk/offentliggoerelser/_search”上找到的特定XBRL文件。找到特定的XBRL文件是我想要做的。以防万一,这里是链接到API documentation。
我正在使用可以在我的代码中的文档中找到的示例json查询。
谢谢你的帮助。
的json测试查询:
{
"query": {
"bool": {
"must": [
{
"term": {
"offentliggoerelse.dokumenter.dokumentMimeType": "application"
}
},
{
"term": {
"offentliggoerelse.dokumenter.dokumentMimeType": "xml"
}
},
{
"range": {
"offentliggoerelse.offentliggoerelsesTidspunkt": {
"from": "2014-10-01"
}
}
}
],
"must_not": [],
"should": []
}
},
"size": 1000
}
2016-12-15
Marcus
+1
如果您不允许访问此资源,则会返回'403 Forbidden'。在JSON文档中设置了凭据吗? –
+0
您是否尝试过测试您的json请求?我建议使用邮递员这样的工具,并确保API调用按照预期使用json请求返回。 –
+0
[http get request with body]的可能重复(http://stackoverflow.com/questions/27180431/http-get-request-with-body) –