Max
的美国国会图书馆技术中心页面提供了访问链接数据的示例。
例如:
curl -L -H 'Accept: application/json' http://id.loc.gov/vocabulary/preservationEvents/creation
运行上面的示例将返回一个json响应-我已经做到了。
但是,当我尝试使用Nodejs脚本访问相同的URL(带有Accept标头)时,它将返回“ 404 Not Found”错误。
这是我的剧本:
'use strict';
const request = require('request');
var url = "http://id.loc.gov/vocabulary/preservationEvents/creation";
var options = {
url: url,
headers: {
"Accept": "application/json"
}
};
request(
options,
(error, response, body) => {
if (error) {
return console.error(error);
}
if (response.statusCode == 200) {
var resp = JSON.parse(body);
console.log(resp);
return console.log(body.substr(0, 128) + '...');
}
else {
return console.error('Error: Response statusCode='+response.statusCode);
}
}
);
我已经在Mac和Digital Ocean Ubuntu服务器上进行了尝试-都给出了404 Not Found结果。
如果您有空的话,很高兴知道您是否能够使用此脚本获得响应-或者让我知道您是否发现错误。
感谢您的帮助。
谢谢
科林·戈德堡
答案 0 :(得分:0)
看起来您需要在发送给请求的选项中设置一个User-Agent。例如,如果将其设置为与curl使用相同,则会起作用
var options = {
url: url,
headers: {
"Accept": "application/json",
"User-Agent": "curl/7.54.0"
}
};
似乎您几乎可以将User-Agent设置为任何内容,并且只要您对其进行设置就可以使用。