Frage

Ich muss eine NodeJS -Client -Anwendung erstellen, mit der eine Postanforderung an die Yahoo -Tischemaker -API gesendet werden kann. Ich habe einen Tag damit verbracht, ohne Erfolg zu haben. Ich sehe die HTTP -Pakete in Wireshark und es beschwert sich auch nicht.

Ich verwende den folgenden Code:

var http = require('http');

var options = {
        host: 'wherein.yahooapis.com',
        port: 80,
        path: '/v1/document',
        method: 'POST'
};

var req = http.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
//  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});
// write data to request body
//req.end('documentURL=http://www.usfca.edu&documentType=text/html&outputType=xml&appid=MrIhH33V34GNOpw91rqJuijGeiLQ7l4hhlJXXt3fOTS0.jAUY8kqhu6SxMhy7J90OSWElw--');
req.write('documentURL%3Dhttp%3A//www.usfca.edu%26documentType%3Dtext/html%26outputType%3Dxml%26appid%3DMrIhH33V34GNOpw91rqJuijGeiLQ7l4hhlJXXt3fOTS0.jAUY8kqhu6SxMhy7J90OSWElw--');
req.end();

Ich mache das gleiche in PHP und es funktioniert dort. Vorschläge werden geschätzt. Ähnliche Probleme traten auf, als ich versuchte, meinen eigenen Server auf ExpressJs auszuführen. Irgendwie erzeugt der obige Code nicht die richtige HTTP -Anforderung. Das obige Snippet wird jedoch direkt aus der Dokumentation der NodeJS entnommen

Bitte helfen Sie !!

Ich erhalte den 400 HTTP -Antwortcode mit der Aussage, dass weder documenturl nore documentContent nicht gefunden wurden!

  • Lalith
War es hilfreich?

Lösung

Erwägen Sie zu verwenden Mikeals Anfragebibliothek Um Ihr Leben zu vereinfachen und seltsame Probleme zu vermeiden:

npm install request

Halten Sie auch an in #node.js und stellen Sie Fragen für eine schnellere Antwort. Stellen Sie sicher, dass Sie Ihre Ergebnisse zurücklegen.

Andere Tipps

Die HTTP-Anforderung von Node.js generiert nicht den entsprechenden Header-Inhaltstyp. Fügen Sie sie daher einfach manuell hinzu. Sie brauchen bisher keinen Express ...

var options = {
    host: 'wherein.yahooapis.com',
    port: 80,
    method: 'POST',
    path: '/v1/document',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top