Как вызвать службу отдыха WCF с учетными данными в узле js? - PullRequest
0 голосов
/ 06 июля 2018

Я вызываю службу отдыха WCF в API-интерфейсе nodejs, но происходит сбой с ошибкой 401: не авторизован. Я знаю, что предоставленные мной учетные данные верны, потому что когда я вызываю wcf rest service с такими же учетными данными в SOAP UI, это работает.

Ниже приведен код NodeJ, который у меня есть.

var express =require('express');
var router=express.Router();
var http = require('http');

//format of actual user name
var username='domain\user_name';

//password has special characters like & ()
var password='';
var auth="Basic " + new Buffer(username + ":" + password).toString("base64");
//Rest service is using HTTPS
var options={
    hostname:'mycomputer.domain.com',
    method:'GET',
    path: '/myrest-service/v1/somedetails/somedata?param1=somevalue&param2=somevalue',    
    headers: {
        "Authorization": auth
    }
}

router.get('/',function(request,response){
    var result='';
    const req = http.request(options, (res) => {
        
        res.on('data', (chunk) => {
            console.log('chunk is received.');
            result=result + chunk;
        });
        res.on('end', () => {
          console.log('No more data in response.');          
          response.send({output: result});
        });
      });
      
      req.on('error', (e) => {
        console.error(`problem with request: ${e.message}`);
      });      
      
      req.end();
});

module.exports = router;

Я также попытался указать параметры в формате ниже

var options={
    hostname:'mycomputer.domain.com',
    method:'GET',
    path: '/myrest-service/v1/somedetails/somedata?param1=somevalue&param2=somevalue',    
    auth:auth
}

Ни один из вариантов не работал. Любое предложение?

1 Ответ

0 голосов
/ 07 июля 2018

Если имя пользователя имеет косую черту, вам нужно указать это имя. var username = 'domain \ user_name';

Одиночный "\" будет игнорироваться. Вместо этого используйте два "\".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...