1

私はnodeAppを持っています。それは何かをします。

特定の時点で、世の中に出回っている API と通信する必要があります。Postman のような REST ツールで API を使用するのは簡単です。

郵便屋さん

Url:
https://epicurl

Headers:
Content-Type : application/json
Accept : application/json
x-key : secret

Body:
{
"some":"kickass"
"data":"here"
}

上記を Postman で送信すると、素早い応答が得られます。残りのツールをどうぞ。

彼らの API が機能するようになったので、今度は Node.js アプリケーションで同じ応答を行う必要があります。

これは物事が奇妙になるところです...

リクエストモジュール: FAILS

var request  = require('request')

...lots_of_other_stuff...

var options = {
    uri: 'https://epicURL',
    method: 'POST',
    json: true,
    headers : {
        "Content-Type":"application/json",
        "Accept":"application/json",
        "x-key":"secretbro"
    },
    body : JSON.stringify(bodyModel)
};

request(options, function(error, response, body) {
    if (!error) {
        console.log('Body is:');
        console.log(body);
      } else {
        console.log('Error is:');
        logger.info(error);
      }

    cb(body); //Callback sends request back...
});

上記は失敗します..私たち全員が愛する良いECONNRESETエラーがスローされます! なんで?知るか?

https.request() - 動作します!

var https = require("https");
https.globalAgent.options.secureProtocol = 'SSLv3_method';

var headers = {
    "Content-Type":"application/json",
    "Accept":"application/json",
    "x-key":"nicetrybro"
}

var options = {
    host: 'www.l33turls.com',
    port:443,
    path: "/sweetpathsofjebus",
    method: 'POST',
    headers: headers
};

var req = https.request(options, function(res) {
    res.setEncoding('utf-8');

    var responseString = '';

    res.on('data', function(data) {
        responseString += data;
    });

    res.on('end', function() {
        var resultObject = responseString;

        //Call the callback function to get this response object back to the router.
        cb(resultObject);

    });
});

req.on('error', function(e) {
    console.log(e);
});
req.write(bodyString);
req.end();

しかし、ふと気づく…

リクエストモジュールを使用するときにこのコード行をそのままにしておくと、機能します...

var https = require("https");
https.globalAgent.options.secureProtocol = 'SSLv3_method';

これはどこかに文書化されていますが、私はそれを見逃していますか? 誰か私にこれを説明してくれませんか?

4

0 に答える 0