Wie set Content-Length beim senden von POST-Requests in NodeJS?
var https = require('https');
var p = '/api/username/FA/AA?ZOHO_ACTION=EXPORT&ZOHO_OUTPUT_FORMAT=JSON&ZOHO_ERROR_FORMAT=JSON&ZOHO_API_KEY=dummy1234&ticket=dummy9876&ZOHO_API_VERSION=1.0';
var https = require('https');
var options = {
host: 'reportsapi.zoho.com',
port: 443,
path: p,
method: 'POST'
};
var req = https.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
res.on('data', function(d) {
process.stdout.write(d);
});
});
req.end();
req.on('error', function(e) {
console.error(e);
});
Wenn ich den oben stehenden code ausführen, erhalte ich folgende Fehlermeldung.
Fehlermeldung:
statusCode: 411
headers: { 'content-type': 'text/html',
'content-length': '357',
connection: 'close',
date: 'Thu, 24 Nov 2011 19:58:51 GMT',
server: 'ZGS',
'strict-transport-security': 'max-age=604800' }
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
411 - Length Required
Zu beheben, wie die abobe Fehler?
Ich habe versucht zu tun unten
var qs = 'ZOHO_ACTION=EXPORT&ZOHO_OUTPUT_FORMAT=JSON&ZOHO_ERROR_FORMAT=JSON&ZOHO_API_KEY=dummy1234&ticket=dummy9876&ZOHO_API_VERSION=1.0';
'
options.headers = {'Content-Length': qs.length}
Aber wenn ich versuche, auf diese Weise erhalte ich folgende Fehlermeldung:
{ stack: [Getter/Setter],
arguments: undefined,
type: undefined,
message: 'socket hang up' }
Kann jemand mir helfen mit diesem?
Dank
koti
PS:Wenn ich geben Sie die gesamte url in die browser-Adressleiste und drücken Sie enter, erhalte ich die JSON-Antwort wie erwartet.
- bitte verwenden Sie keine Daten.Länge, ich stieß auf dieses Thema und Autor sagte, nicht die Daten verwenden.Länge, verwenden Sie stattdessen Puffer.byteLength(Daten). Ref-Frage: stackoverflow.com/questions/18692580/... und ref-Problem: github.com/visionmedia/express/issues/1749
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stellt sich heraus, dass die Lösung für das gegebene problem, wenn Sie tun wollen, machen Sie eine POST-Anforderung wird offenbar die "Header" - Feld des options-Objekt enthalten, ein 'Content-Length' - Feld.
Siehe code hier:
Wie man einen HTTP-POST-Anforderung in node.js?
ERR_CONTENT_LENGTH_MISMATCH
Fehler. Frage mich, wie kann ich es einstellen auf den richtigen Wert zu stoppen immer dieser Fehler.denke ich, sind Sie fehlen zwei Dinge.
Vorausgesetzt, p ist sowohl Ihren Endpunkt und Ihre url-kodierte payload.
Könnten Sie teilen Sie Ihre variable p in die beiden api-Pfad, und die post_data Nutzlast, die Sie schreiben müssen vor dem beenden der Anforderung.
Hoffe, es hilft!!
Ich bin in der Lage, dieses problem zu lösen, indem Sie ändern die Methode, die aus der POST zu HOLEN
Dank
koti