我想向public colour analysis API提出请求:
如果我将此网址放入Chrome的地址栏,我会在大约10秒后收到一个JSON对象,但是当从Node发出请求时,我只会收到ESOCKETTIMEDOUT错误。
request.get({
uri: 'http://mkweb.bcgsc.ca/color-summarizer?url=http://www.undistraction.com/vangogh/images/fisherman_s_wife_on_the_beach-8.jpg&precision=vlow&num_clusters=7&json=1&histogram=0&pixel=0',
timeout: 60000,
})
.on('error', (error) => {
console.log(error); // ESOCKETTIMEDOUT
})
.on('finish', (body) => {
// Happy place
});
可能导致此错误的原因是什么?
答案 0 :(得分:2)
我怀疑它是因为你的标题中没有用户代理。
也许试试:
request.get({
uri: 'http://mkweb.bcgsc.ca/color-summarizer?url=http://www.undistraction.com/vangogh/images/fisherman_s_wife_on_the_beach-8.jpg&precision=vlow&num_clusters=7&json=1&histogram=0&pixel=0',
timeout: 60000,
headers: {'User-Agent': 'Some user agent string'}
});
也许您需要从浏览器中复制用户代理字符串。另一种可能的解决方案可能是没有正确的cookie等。您确定您有权获得该端点吗?
有关详细信息,请参阅此答案: