Как вызвать метод https POST с помощью сценария шлюза в IBM Bluemix APIConnect

Я пытаюсь вызвать другой API внутри Bluemix или любой другой метод публикации HTTPS, используя сценарий шлюза внутри IBM Bluemix (API Connect), используя приведенный ниже код:

var urlopen = require('urlopen');
var options = {
            target: 'https://pokemons.mybluemix.net/api/pokemons/1',
            method: 'POST',
            headers: {},
            contentType: 'application/json',
            timeout: 60,
            data: {"Message": "DataPower GatewayScript"}

};

urlopen.open(options, function(error, response) {
  if (error) {
    // an error occurred during the request sending or response header parsing
    session.output.write("urlopen error: "+JSON.stringify(error));
  } else {
    // get the response status code
    var responseStatusCode = response.statusCode;
    var responseReasonPhrase = response.reasonPhrase;
    console.log("Response status code: " + responseStatusCode);
    console.log("Response reason phrase: " + responseReasonPhrase);
    // reading response data
    response.readAsBuffer(function(error, responseData){
      if (error){
        throw error ;
      } else {
        session.output.write(responseData) ;
        apim.output('application/json');
      }
    });
  }
});

Но я получаю следующую ошибку:

{
  "httpCode": "500",
  "httpMessage": "Internal Server Error",
  "moreInformation": "URL open: Cannot create connection to 'https://pokemons.mybluemix.net/api/pokemons/1', status code: 7"
}

Похоже, есть проблема с SSL-соединениями. Если да, то как я могу получить сведения о SSL для каталога песочницы по умолчанию в IBM Bluemix API Connect? Или как я могу сделать вызовы HTTPS POST для приведенного выше примера URL-адреса?


person Diya    schedule 31.07.2017    source источник


Ответы (1)


Начиная с версии 5.0.6:

IBM API Connect 5.0 .х

Forward SSLProxy (и Crypto) заменяется на SSLClient. Эти новые профили поддерживают эфемерные шифры (DHE и ECDHE), полную секретность пересылки и расширение индикации имени сервера (SNI). Обратите внимание, что шифры DHE в DataPower SSLServerProfile используют 2048-битные параметры DH (как сервер) и принимают 1024-битные параметры DH (как клиент).

Чтобы ваш конкретный пример работал на API Connect с использованием HTTPS, вам необходимо указать sslClientProfile.

Например:

var urlopen = require('urlopen');
var options = {
            target: 'https://pokemons.mybluemix.net/api/pokemons/1',
            method: 'POST',
            headers: {},
            contentType: 'application/json',
            timeout: 60,
            sslClientProfile: 'webapi-sslcli-mgmt',
            data: {"Message": "DataPower GatewayScript"}

};
person Rogelio Reyo Cachu    schedule 26.09.2017