Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
Ask Question
When I send request to google api (using either axios or just https), e.g.
https://www.googleapis.com/blogger/v3/blogs/2399953?key=...
I always hit the "
Client network socket disconnected before secure TLS connection was established
" error.
But if I send request to
https://api.github.com
, it works just fine. I have googled the error, but I can't find much useful information. Here
https://github.com/nodejs/node/issues/21088
said if the server uses TLS 1.0, it may happen but apparently it is not my case.
I also try
googleapis
but still hit the same error.
Any idea how to fix the error ?
---- update ----
My question was closed 5 months ago. I opened
an issue
against googleapi and it was also closed. I had gave it up but to my surprise it keeps getting traffic. So I updated my question and hope it will be reopened.
First, google api has moved to here
https://github.com/googleapis/google-api-nodejs-client
Second, just using vpn to run
the first example
there (using vpn because google service is blocked for whatever reason), I will get connect ETIMEDOUT while I can get the result from browser.
const {google} = require('googleapis');
const blogger = google.blogger({
version: 'v3',
auth: 'YOUR API KEY'
blogger.blogs.get({blogId: '3213900'}, (err, res) => {
if (err) {
console.error(err);
throw err;
console.log(`The blog url is ${res.data.url}`);
//But I can get result in browser https://blogger.googleapis.com/v3/blogs/3213900?key=xxx
I think the problem was solvable because nodejs doesn't send the request through my vpn proxy. So my question is somewhat related to this one, What could cause "connect ETIMEDOUT" error when the URL is working in browser?
But the solution there did not work for me. One answer in this SO How can I use an http proxy with node.js http.Client? mentioned using request and it works!
var request = require("request");
request(
"https://blogger.googleapis.com/v3/blogs/3213900?key=xxx",
method: "GET",
proxy: my-vpn-proxy,
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
Too bad request was deprecated! I can't make axios works too!
I also tried tunnel and got read ECONNRESET error
; I tried global-tunnel-ng and got the error
TypeError: Cannot read property 'proxy' of undefined
But https-proxy-agent works too,
var url = require('url');
var https = require('https');
var HttpsProxyAgent = require('https-proxy-agent');
// HTTP/HTTPS proxy to connect to
var proxy = 'my-vpn-proxy';
var endpoint = 'https://blogger.googleapis.com/v3/blogs/3213900?key=xxx';
var opts = url.parse(endpoint);
var agent = new HttpsProxyAgent(proxy);
opts.agent = agent;
https.get(opts, function (res) {
console.log('"response" event!', res.headers);
res.pipe(process.stdout);
So I think this problem may be solvable.
–
–
In case, someone else faces this same problem, a possible solution (if you are using windows OS), is to follow the process below:
Press the Windows Key
Search For Internet Options
Click on "Internet Options"
Click On "Connection"
Go to LAN Settings
Uncheck "Use Proxy Server for LAN ...."
It should work but the permanent solution is to make sure you turn all software that might be automatically setting up proxy for you.
After the question was re-opened I raised another issue against google api and finally got the answer!
So google api has supported using proxy, check here
–
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.