使用 Nodejs 访问国会图书馆关联数据时出现问题
Problem accessing Library of Congress Linked Data using Nodejs
位于 http://id.loc.gov/techcenter/ 的国会图书馆技术中心页面提供了访问链接数据的示例。
例如:
curl -L -H 'Accept: application/json' http://id.loc.gov/vocabulary/preservationEvents/creation
运行 上面的示例 returns 一个 json 响应 - 我已经这样做了。
但是当我尝试使用 Nodejs 脚本访问相同的 url - 使用 Accept header 时,它 returns 出现“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 结果。
如果您有时间,我将很高兴知道您是否能够使用此脚本获得响应 - 或者如果您发现错误请告诉我。
感谢任何帮助。
谢谢
科林·戈德堡
您似乎需要在发送给请求的选项中设置用户代理。例如,如果您将它设置为与 curl 使用的相同
var options = {
url: url,
headers: {
"Accept": "application/json",
"User-Agent": "curl/7.54.0"
}
};
似乎你几乎可以将 User-Agent 设置为任何东西,只要你设置它就会起作用。
位于 http://id.loc.gov/techcenter/ 的国会图书馆技术中心页面提供了访问链接数据的示例。
例如:
curl -L -H 'Accept: application/json' http://id.loc.gov/vocabulary/preservationEvents/creation
运行 上面的示例 returns 一个 json 响应 - 我已经这样做了。
但是当我尝试使用 Nodejs 脚本访问相同的 url - 使用 Accept header 时,它 returns 出现“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 结果。
如果您有时间,我将很高兴知道您是否能够使用此脚本获得响应 - 或者如果您发现错误请告诉我。
感谢任何帮助。
谢谢
科林·戈德堡
您似乎需要在发送给请求的选项中设置用户代理。例如,如果您将它设置为与 curl 使用的相同
var options = {
url: url,
headers: {
"Accept": "application/json",
"User-Agent": "curl/7.54.0"
}
};
似乎你几乎可以将 User-Agent 设置为任何东西,只要你设置它就会起作用。