2017-09-05 2 views
0

Die vorherige answer erfordert die request Komponente, von der ich mag, zu verwenden, wegen des akademischen Zwecks und anderer verwandter Politik. Mit Vanille 8.4.0 node.js, versuchte ich:Wie posten Sie JSON über Node.js, ohne `request` zu verwenden?

var https = require('https'); 
var sendData = { 
    api_key: 'abc', 
    api_secret: '123', 
    image_url: 'http://lalala.com/123/lalala.jpg', 
    return_attributes: ['gender','age'] 
}; 
var options = { 
    hostname: 'lalala.com', 
    port: '443', 
    path: '/info', 
    method: 'POST', 
    rejectUnauthorized: false, 
    requestCert: true, 
    headers: { 
    'Content-Type': 'application/json', 
    } 
}; 
var openreq = https.request(options, function(serverFeedback){ 
    if (serverFeedback.statusCode == 200) { 
    var body = ''; 
    serverFeedback.on('data', (data)=>{ body += data; }) 
     .on('end',()=>{ 
     console.log(body); 
     }); 
    } else { 
    console.log('failed'); 
    } 
}); 
openreq.write(JSON.stringify(sendData)) 
openreq.end(); 

der Code obigen Ergebnisse in failed Ausgabe leider.

+0

Sie möchten JSON an den Webserver senden? Sie müssen Knotenmodule wie 'https',' request' verwenden, um das zu tun, Sie können auch 'data' in' options' setzen und das Programm wird die Daten als 'req.body' senden eine Post-Anfrage – turmuka

+1

Add error handler: 'openreq.on ('Fehler', (e) => {console.error (e);});' um zu wissen, was der Fehlergrund ist. – alexmac

+1

Was ist 'serverFeedback.statusCode'? – robertklep

Antwort

0

Es ist nichts falsch mit Ihrer Anfrage fließt, wie es fast genau Node.js ähnelt Dokumentation HTTP und HTTPS Führungen (abgesehen von JSON Content-Type). Sie sind jedoch nur für 200 Antwort suchen und nicht, dass Fehler erwarten könnte Nachricht in Körpern, die vor serverFeedback.statusCode == 200 Zustand erfaßt werden sollen:

serverFeedback.setEncoding('utf8'); 
serverFeedback.on('data', (chunk) => { 
    console.log(`BODY: ${chunk}`); 
}); 
serverFeedback.on('end',() => { 
    console.log('No more data in response.'); 
}); 

In jedem Fall Problem ist auf jeden Fall mit der Remote-Host dann, und Sie

console.log(`STATUS: ${serverFeedback.statusCode}`); 
console.log(`HEADERS: ${JSON.stringify(serverFeedback.headers)}`); 

Nur noch eine Sache, wenn Sie mit Version , für die gleichen akademischen Zwecken es lohnt denken Nutzung von var für: könnte auch Antwortinformationen enger mit beobachten 10 & const, sowie Fettpfeilfunktionen und Versprechen statt Rückrufe.

Verwandte Themen