2017-07-24 11 views
1

我試圖從CA API調用API,該API返回證書文件作爲格式爲p7b的附件。我需要將其附加到我的API並返回到我的客戶端。我是NodeJS的新手,我無法做到這一點。任何人都可以幫忙嗎?通過NodeJS調用遠程API並將結果附加到我的API失敗

我試過res.pipe(),它沒有工作。我在下面給出了我的代碼片斷。

app.get("/api/certificate/:certificateid", function (req, res) {   
     var certificateId = req.params.certificateid; 
     var header = { 
      "X-DC-DEVKEY": apiKey, 
      "Content-Type": "application/json" 
     }; 
     var options = { 
      host: certUrl, 
      port: 443, 
      method: 'GET', 
      path: 'xxxxx/certificate/' + certificateId + '/download/format/p7b', 
      headers: header 
     }; 
     https.request(options, function (res1) { 
     // res1.setEncoding('gzip'); DID NOT WORK    
      res1.on('data', function (data) { 
       var result = JSON.stringify(data); 
       console.log(result);     
       res.setHeader('Content-type', 'application/x-pkcs7-certificates'); 
       res.setHeader('Content-Encoding', 'gzip'); 
       res.setHeader('Content-Disposition', 'filename=blockwaveinsurance_com.p7b'); 
       res.end(data,'gzip'); 
      }); 

     }).end(); 
    }); 
+0

我可以知道更多的描述你的問題,就像從哪裏得到這些迴應要發送什麼? –

+0

CA API將證書作爲p7b文件返回。我需要從我的API返回相同的內容。它是一個Digicert API,它返回一個證書文件。 –

+0

使用res.json({result:resultl}) –

回答

0

出於某種原因,HTTPS不工作對我來說,重新發送遠程API來我的API,可以通過管道或任何其他方式的附件,但我能夠通過請求模塊做到這一點。這裏是代碼,如果有人需要它

var certUrl='www.xxxx.com'; 

var apiKey='xxxxx'; 

app.get("/api/certificate/:certificateid", function (req, res) 
{ 

      var certificateId = req.params.certificateid; 

      var url=certUrl+"/services/v2/certificate/" + certificateId + "/download/format/p7b"; 

      var options = { 
       url: url, 
       headers: { 
        "X-DC-DEVKEY": apiKey, 
       } 
      }; 

      function callback(error, response, body) { 

       if (!error && response.statusCode == 200) { 

        console.log('no error'); 

       } 
      } 

      request(options, callback).pipe(res); 
     });