Ich versuche, die HTML validator API zu verwenden. Die Curl-Beispiele funktionieren gut für mich und ich kann sie im Knoten als Kindprozess finden. Hier ist der Code dafür:Node.js entspricht dieser Curl-Anfrage
var command = ('curl -H "Content-Type:text/html; charset=utf-8" --data-binary @' + file +
' https://validator.w3.org/nu/?out=json');
exec(command, function(err1, out, err2) {
console.log(out);
console.log('done');
});
Wenn ich jedoch versuchte, eine Standard-HTTP-Anfrage zu verwenden, konnte ich es nicht funktionieren. Ich habe es mit der Unirest Bibliothek für Node versucht. Hier ist der Code, den ich verwenden:
var source = '<html><head><title>a</title></head><body>a</body></html>';
var url = 'http://validator.w3.org/nu/?out=json';
var Request = unirest.post(url);
Request.headers({'Content-Type': 'text/html', 'charset': 'utf-8'});
Request.send(source);
Request.end(res => console.log(res));
Der Antworttext ist nicht definiert und die Antwort raw_body ist leer. Ich weiß nicht, was ich falsch mache und würde mich über jede Hilfe freuen.
Dieser hat es getan. Vielen Dank. – Yulek
Super-Agent muss automatisch einen User-Agent-Header hinzufügen, was erklären würde, warum mein Beispiel "einfach funktioniert", ohne etwas Besonderes tun zu müssen. – Kevin
@Kevin Ja, viele HTTP-Clients fügen Benutzer-Agent-Header automatisch zur Kompatibilität hinzu (mit Websites wie w3.org). Curl macht das auch, weshalb der curl-Befehl in der Frage funktioniert. – tcooc