我正在使用IBM Bluemix为一个学校项目制作一个web服务.

我的项目需要从API请求JSON,这样我就可以使用它提供的数据.我对一个数据集使用http get方法,我不确定它是否工作正常.

当我运行我的代码时,我会得到以下信息:

错误:不支持协议"https:".应为"http:"

是什么原因造成的?我该如何解决?

这是我的.js份文件:

// Hello.
//
// This is JSHint, a tool that helps to detect errors and potential
// problems in your JavaScript code.
//
// To start, simply enter some JavaScript anywhere on this page. Your
// report will appear on the right side.
//
// Additionally, you can toggle specific options in the Configure
// menu.

function main() {
  return 'Hello, World!';
}

main();/*eslint-env node*/

//------------------------------------------------------------------------------
// node.js starter application for Bluemix
//------------------------------------------------------------------------------

// HTTP request - duas alternativas
var http = require('http');
var request = require('request');

// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');

//chama o express, que abre o servidor
var express = require('express');

// create a new express server 
var app = express();

// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));

// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();

// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {
    // print a message when the server starts listening
    console.log("server starting on " + appEnv.url);
});


app.get('/home1', function (req,res) {
    http.get('http://developers.agenciaideias.com.br/cotacoes/json', function (res2) {
        var body = '';
        res2.on('data', function (chunk) {
            body += chunk;
        });
        res2.on('end', function () {
            var json = JSON.parse(body);
            var CotacaoDolar = json["dolar"]["cotacao"];
            var VariacaoDolar = json["dolar"]["variacao"];
            var CotacaoEuro = json["euro"]["cotacao"];
            var VariacaoEuro = json["euro"]["variacao"];
            var Atualizacao = json["atualizacao"];

            obj=req.query; 

            DolarUsuario=obj['dolar'];
            RealUsuario=Number(obj['dolar'])*CotacaoDolar;

            EuroUsuario=obj['euro'];
            RealUsuario2=Number(obj['euro'])*CotacaoEuro;

            Oi=1*VariacaoDolar;
            Oi2=1*VariacaoEuro;

            if (VariacaoDolar<0) {
            recomend= "Recomenda-se, portanto, comprar dólares.";
            }

            else if (VariacaoDolar=0){
                recomend="";
            }

            else {
                recomend="Recomenda-se, portanto, vender dólares.";
                  }

            if (VariacaoEuro<0) {
            recomend2= "Recomenda-se, portanto, comprar euros.";
            }

            else if (VariacaoEuro=0){
                recomend2="";
            }
            else {
                recomend2="Recomenda-se,portanto, vender euros.";
                  }   

            res.render('cotacao_response.jade', {
                         'CotacaoDolar':CotacaoDolar,
                        'VariacaoDolar':VariacaoDolar,
                        'Atualizacao':Atualizacao,
                        'RealUsuario':RealUsuario,
                        'DolarUsuario':DolarUsuario,
                        'CotacaoEuro':CotacaoEuro,
                        'VariacaoEuro':VariacaoEuro,
                        'RealUsuario2':RealUsuario2,
                        'recomend':recomend,
                        'recomend2':recomend2,
                        'Oi':Oi,
                        'Oi2':Oi2
            });

        app.get('/home2', function (req,res) {
    http.get('https://www.quandl.com/api/v3/datasets/BCB/432.json?api_key=d1HxqKq2esLRKDmZSHR2', function (res3) {
        var body = '';
        res3.on('data', function (chunk) {
            body += chunk;
        });
        res3.on('end', function () {
            var x=json.dataset.data[0][1];
      console.log("My JSON is "+x); });

    });
    });
        });
    });
});

这是我得到的错误屏幕的打印:enter image description here

推荐答案

当您想要请求https资源时,需要使用https.get,而不是http.get.

https://nodejs.org/api/https.html

Node.js相关问答推荐

Azure虚拟机上的JS Express:可疑请求?

链接Inbox类方法,范围在哪里以及为什么发生变化?

MongoDB-如何验证Document字段以仅允许特定的文件扩展名?

为什么在导出的函数中调用node-sqlite3中的数据库方法时不起作用?

Node.js分页返回空数组

"sh:/usr/local/bin/node:当它存在于文件目录中时未找到

使用单个 MongoDB 查询更新多个元素

NPM如何管理node_modules传递依赖?

如何修复我的 NodeJS SSE 写入函数以在后续调用中更新 HTML?

每秒从套接字传来的数据有哪些存储方式?

当我们有esnext时,为什么我们需要nodenext typescript 编译器选项?

如何限制 cron 表单将消息推送到 RabbitMQ?

Node JS:自动 Select `http.get`与`https.get`

从目录 node Js 中检索文件

使用 MongoDB 更新嵌套数组

按日期时间字段获取最新的 MongoDB 记录

使用 node 的内置调试器判断变量?

Node.js 与 .net 中的异步/等待

找不到在 docker compose 环境中运行的 node js 应用程序的模块

node.js 找不到模块mongodb