Estou tentando fazer uma solicitação GET simples para um site: https://www.crunchbase.com/location/belgrade/2a22cd01619e1ff39394303b255670cb?utm_source=crunchbase_tc_river&utm_medium=export&utm_campaign=dataset
Recebo um erro como este:
throw new TypeError('Request path contains unescaped characters.');
^
TypeError: Request path contains unescaped characters.
at new ClientRequest (_http_client.js:53:11)
at TunnelingAgent.exports.request (http.js:31:10)
at TunnelingAgent.createSocket (/usr/lib/nodejs/tunnel-agent/index.js:117:25)
at TunnelingAgent.createSecureSocket [as createSocket] (/usr/lib/nodejs/tunnel-agent/index.js:184:41)
at TunnelingAgent.addRequest (/usr/lib/nodejs/tunnel-agent/index.js:80:8)
at new ClientRequest (_http_client.js:137:16)
at Object.exports.request (http.js:31:10)
at Object.exports.request (https.js:181:15)
at Request.start (/usr/lib/nodejs/request/index.js:607:30)
at Request.end (/usr/lib/nodejs/request/index.js:1235:28)
Existe alguma correção para verificar se o url é compatível para ser enviado na função de solicitação como um parâmetro? Estou usando [email protected] e node v5.5.0
Funciona bem quando faço isso, usando as mesmas versões que você:
'use strict';
const request = require('request');
request(
'https://www.crunchbase.com/location/belgrade/2a22cd01619e1ff39394303b255670cb?utm_source=crunchbase_tc_river&utm_medium=export&utm_campaign=dataset',
(error, response, body) => {
if (error) {
return console.error(error);
}
return console.log(body.substr(0, 128) + '...');
}
);
Você pode postar o código?
Eu verifiquei o erro real.
Este erro só pode ocorrer quando você coloca um espaço em branco na url, tentei fazer isso, mas a solicitação sempre parece escapar deles corretamente.
Você terá que postar um snippet ou tentar uma versão mais recente (a sua é bem antiga) e ver se o erro persiste.
Eu trabalho atrás de um servidor proxy. Seu código não parece funcionar atrás de um proxy. Estou colando meu código abaixo. Você poderia me dizer se esta é a maneira correta de enviar uma solicitação ao trabalhar por trás de um servidor proxy.
'use strict';
const request = require('request');
var get_config = function(site_url){
var config = {
url : ((site_url)),
proxy : 'http://proxyhost:proxyport'
};
return config;
};
request(
get_config('https://www.crunchbase.com/location/belgrade/2a22cd01619e1ff39394303b255670cb?utm_source=crunchbase_tc_river&utm_medium=export&utm_campaign=dataset'),
(error, response, body) => {
if (error) {
return console.error(error);
}
return console.log(body.substr(0, 128) + '...');
}
)
Também uma observação interessante é que quando estou substituindo "https" por "http", a solicitação está funcionando corretamente.
Seu proxy não suporta https então?
Pelo que eu posso dizer, internamente há algum redirecionamento acontecendo, mas o redirecionamento parece ter um URL malformado / inválido que contém espaços em branco, que assinala esse erro.
Se for um proxy público, você poderia postar as informações?
Caso contrário, adicione um ponto de interrupção em "/usr/lib/nodejs/request/index.js:607" e inspecione o url passado por meio de qualquer depurador.
Ei @ dsaumyajit007
Isso parece bom e funciona perfeitamente com google.com
, resultado após seu trecho de código.
const request = require('request');
var get_config = function(site_url){
var config = {
url : ((site_url)),
proxy : 'http://proxyurl:proxyport'
};
return config;
};
request(
get_config('https://www.crunchbase.com/location/belgrade/2a22cd01619e1ff39394303b255670cb')
, (function (error, response, body) {
console.log(response.statusCode);
console.error(error);
return console.log(body.substr(0, 128) + '...');
})
);
Por google.com
null
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-IN"><head><meta content="text/html; charset=UTF-...
@ sudheesh001 Observe que você pode estar usando um proxy diferente.
Vamos esperar por ele.
Tenho uma dúvida muito básica: estou executando o Node js no Ubuntu 14.04 e em execução
node --version
Eu obtenho a v5.5.0. Esta é a versão mais estável porque em algum lugar eu vi que as versões são 0.xx. Estou usando a versão certa do Node? Eu instalei de acordo com as instruções em https://nodejs.org/en/download/package-manager/#debian -and-ubuntu-based-linux-distributions
Sim, as versões 0.x são anteriores à fusão iojs / nodejs.
v5.5.0 é estável.
Ainda acredito que é apenas o seu proxy estranho.
OK. Algum motivo para o link funcionar substituindo "https" por "http"? Ele corrige esse problema de alguma forma
Ok, está funcionando magicamente agora. : +1:
Acabei de reinstalar o nodejs e o pacote de solicitação. Obrigado por toda a ajuda @ sudheesh001 @SimonSchick
Eu reinstalo o módulo de solicitação, mas ele falha depois de alguns dias para este erro novamente
Tive o mesmo problema, será que as pessoas reclamando aqui têm outro idioma ativado em seus teclados? Eu tenho árabe / inglês. isso pode nos levar a algum lugar enquanto investigamos
Estou tendo esse problema no Windows (Ethernet para rede doméstica), mas não no macOS (Wi-Fi para a mesma rede). O truque http
não funciona para mim.
let url = 'http://localhost:30001?q=ааббввггдд'
axios.get(encodeURI(url)).then( data => {
})
Use a solicitação para enviar a solicitação get no ambiente kubernetes. Esse erro ocorrerá quando os parâmetros chineses forem carregados no url, mas não em outros ambientes
Comentários muito úteis
let url = 'http://localhost:30001?q=ааббввггдд'
axios.get(encodeURI(url)).then( data => { })