请教一个 Nodejs 的网络请求问题。
请教一个 Nodejs 的网络请求问题。
我使用 nodejs 去请求一个 api 地址,这个地址需要翻&&墙。 我挂上代理后,浏览器和 postman 都能请求到数据,nodejs 就是请求不到数据,一直是要么是 connect ETIMEDOUT 要么是 confuse。 nodejs 使用的是 axios 作为请求库,也试过 request,两个都不能请求到数据。 请教一下各位大神,这个可能是什么原因呀。
首先你挂的什么代理,有在代码里指名用什么代理吗
用 proxy 属性指定使用的代理,https://github.com/axios/axios#request-config
我刚出来收快递了,我回去试一下
大神你好
情况有了变化但是数据还是没有获取到;
axios response 里面的 status 是 200,statusText 是 Connection established ;
但是 data 还是没有数据,这个情况我还真没遇到过,能否指导一下,谢谢
最好把代码贴出来吧,光这样说不知道什么问题
this.axiosInstance.defaults.proxy = false; this.axiosInstance.defaults.httpsAgent = tunnel.httpsOverHttp({ proxy: { host: proxyHost, port: proxyPort } });
npm tunnel。需要上代理隧道
是不是你的代理是 SOCKS5 协议的,看上去那个库不支持。
谢谢大神,成功了。这个代理隧道是什么意思呀?
客气了。原理我也不太懂,只是以前遇到过同样的问题
我也遇到了这个问题, 楼主可以贴个示例吗? 用的 axios 的版本是多少?
我发现有些网站不会走代理,例如下面的 baidu.com<br>axios.defaults.proxy = false;<br>axios.defaults.httpsAgent = tunnel.httpsOverHttp({<br> // 随便设置个错误的端口也能成功,实际上没走代理<br> proxy: { host: "127.0.0.1", port: "7777" }<br>});<br><br>axios<br> .get("<a target="_blank" href="http://baidu.com" rel="nofollow noopener">http://baidu.com</a>")<br> .then(function(response) {<br> console.log("Response with axios was ok: " + response.status);<br> })<br> .catch(function(error) {<br> console.log(error);<br> });<br>
当然,很高兴帮助你解决 Node.js 的网络请求问题。在 Node.js 中,常用的库来进行网络请求是 axios
和 Node.js 自带的 http
或 https
模块。这里我会展示如何使用 axios
库来进行一个基本的 GET 请求,以及如何处理错误和响应数据。
首先,你需要安装 axios
库。如果你还没有安装,可以通过 npm 安装:
npm install axios
然后,你可以使用以下代码来进行一个 GET 请求:
const axios = require('axios');
const url = 'https://api.example.com/data'; // 替换成你的目标URL
axios.get(url)
.then(response => {
console.log('响应数据:', response.data);
})
.catch(error => {
if (error.response) {
// 服务器响应了一个状态码,且状态码在2xx之外
console.error('错误响应:', error.response.data);
console.error('状态码:', error.response.status);
console.error('响应头:', error.response.headers);
} else if (error.request) {
// 请求已经发出,但没有收到响应
console.error('无响应:', error.request);
} else {
// 在设置请求时发生了错误
console.error('错误:', error.message);
}
});
这段代码展示了如何使用 axios
发送一个 GET 请求,并处理可能的错误和响应数据。你可以根据需要修改 URL 和处理逻辑。如果你需要发送 POST 请求或其他类型的请求,axios
同样提供了相应的方法,比如 axios.post()
。希望这能帮助你解决问题!