Eu estou tentando obter o HTML de um site usando o restaurador. Mas quando eu tento obter a parte relevante do resultado, eu sempre recebo o erro,
"TypeError: Não é possível ler a propriedade" rawEncoded "de indefinido".
"rawEncoded" às vezes é "res". Eu acho que isso muda com base no tempo de processamento.
Eu estou tentando obter result.request.res.rawEncode do restaurador obter resultado.
Minha função:
var rest = require("restler");
var loadHtmlUrl = function(weburl) {
var resultstr = rest.get(weburl).on("complete", function(result) {
var string = result.request.res.rawEncode;
return string;
});
return resultstr;
};
Então:
var htmlstring = loadHtmlUrl("http://google.com");
Talvez o restler seja o caminho totalmente errado a seguir. Talvez eu não entenda isso completamente. Mas eu definitivamente estou preso ...
Obrigado!
Respostas:
3 para resposta № 1Seu return resultstr;
não correr antes do on("complete"
callback é chamado porque é assíncrono, resultando no seu htmlstring
sendo nulo? Eu acho que você precisa ter um retorno de chamada como um parâmetro para o seu loadHtmlUrl
igual a:
var rest = require("restler");
var loadHtmlUrl = function(weburl, callback) {
var resultstr = rest.get(weburl).on("complete", function(result) {
callback(result.request.res.rawEncode);
});
};
E então ligue assim:
var htmlstring = null;
loadHtmlUrl("http://google.com", function(rawEncode) {
htmlstring = rawEncode;
//Do your stuff here...
});
Eu acho que isso resolverá problemas futuros que você terá. No entanto, acho que o problema real que você está enfrentando é que result.request não tem a propriedade de res
. Eu estou pensando que a minha mudança acima pode corrigir este problema (não sei como). Se não, então eu recomendo olhando para que propriedades result.request
tem como iniciador de depuração ...