Request: Erro: URI inválido "/"

Criado em 5 ago. 2016  ·  19Comentários  ·  Fonte: request/request

Acho que este pacote é realmente pedante sobre as opções.
alguem pode apontar qual pode ser o erro abaixo?

error [Error: Invalid URI "/"]

options { 
  uri: 'https://tracker.dashbot.io/track',
  json: true,
  qs: 
   { platform: 'generic',
     v: '0.6.0',
     apiKey: 'xxxxx',
     type: 'outgoing' },
  method: 'POST',
  href: '',
  pathname: '/' 
}
stale

Comentários muito úteis

Eu também encontrei esse problema. Consegui resolver isso consolidando todas as opções que estava tentando definir em um único objeto.

O que não funcionou

request.post({
      uri: form_url,
      jar: true
}, {
      form: {
        // form data
      }
    }, (err, res, body) => {
        // handle response
  }
});

O que

request.post(form_url, {
      jar: true,
      form: {
        // form data
      }
    }, (err, res, body) => {
        // handle response
  }
});

ou

request.post({
      uri: form_url
      jar: true,
      form: {
        // form data
      }
    }, (err, res, body) => {
        // handle response
  }
});

Os dados do formulário são considerados uma opção, portanto, devem residir no objeto options. Parece que a função ainda aceita um parâmetro de string como o primeiro argumento para o URI, mas você pode omitir isso e adicioná-lo ao seu objeto de opções, se preferir - as duas maneiras funcionaram para mim. Apenas certifique-se de passar apenas um objeto de opções.

Espero que isso ajude qualquer pessoa que se encontre aqui.

Todos 19 comentários

Recebi uma resposta { success: true } usando as opções exatas que você especificou. Não tenho certeza do motivo do seu erro, mas não parece estar relacionado à solicitação. Testado com request 2.74.0 e Node.js 4.4.7 LTS

Aqui está meu código de teste para referência

'use strict';
var request = require('request'),
    options = {
        uri: 'https://tracker.dashbot.io/track',
        json: true,
        qs: {
            platform: 'generic',
            v: '0.6.0',
            apiKey: 'Y0J3dAqe2j7NBDXpyUQaChFt4d5GzjACHU0NixOO',
            type: 'outgoing'
        },
        method: 'POST',
        href: '',
        pathname: '/'
    };

request(options, function (err, resp, body) {
    console.log(err, resp, body);
});

obrigado por verificar.
Tentei várias opções diferentes e acho que json: true deve ser o objeto real a ser passado como JSON json: dataObject ? em vez de usar a opção body.

Eu também usei o pacote de solicitação-promessa - o que eu acho que apenas encerra isso?

    rp({
      uri: url,
      method: 'POST',
      json: message
    })

o acima funcionou

talvez ter pathname: '/' estava confuso ou conflitante com a opção qs ?

Tenho o mesmo problema aqui. No meu caso, estou apenas encaminhando a solicitação POST para o serviço interno:

  var options = {
    url: 'http://myService/',
    headers: {
      Authorization: 'Bearer ???????',
    },
  }
  req.body.customerId = myCustomerId;
  request.post(options, {form: req.body}, function(err, resp, body){
    if (err){
      console.error(err);
    } else {
    }
  });

Estou enfrentando um problema semelhante. A resposta que estou recebendo é [Error: Invalid URI "/"] . Eventualmente, estou tentando obter strictSSL = false (ou verdadeiro por ambiente).

Aqui está o meu pedido:

var creds = {username : 'username', password: 'somepassword'};
request.post({ url: creds.appURL + '/endpoint/in/api' }, { json: creds}, function(error, response, body) {
    if(error) {
        console.log('ERROR:', error);
    } else {
        console.log(response, body);
    }
}

Isso está acontecendo comigo também por algum motivo misterioso. Posso ver, usando o objeto e as opções de solicitação, que não há uma chave 'URI' com "/". Não tenho certeza de qual é o problema, mas voltarei aqui se descobrir.

eu também :( +1

para também

+1

+1

+1
nó: v8.10.0
pedido: 2.85.0

Eu tive o mesmo problema, ao escrever uma tarefa de download grunhido. Acontece que às vezes eu obtinha o url da solicitação como string "http://..." e às vezes como uma string envolvida dentro de um array ["http://..."] , o que tornava o erro difícil de detectar simplesmente imprimindo o url da solicitação.
Eu só percebi isso depois de depurar a análise de argumento da função request() .

Espero que ajude.

+1

Eu tenho o mesmo problema

Uncaught Error: Invalid URI "/"
at Request.init (node_modules/request/request.js:443:31)
at new Request (node_modules/request/request.js:283:8)
at request (node_modules/request/index.js:50:10)

Eu também encontrei esse problema. Consegui resolver isso consolidando todas as opções que estava tentando definir em um único objeto.

O que não funcionou

request.post({
      uri: form_url,
      jar: true
}, {
      form: {
        // form data
      }
    }, (err, res, body) => {
        // handle response
  }
});

O que

request.post(form_url, {
      jar: true,
      form: {
        // form data
      }
    }, (err, res, body) => {
        // handle response
  }
});

ou

request.post({
      uri: form_url
      jar: true,
      form: {
        // form data
      }
    }, (err, res, body) => {
        // handle response
  }
});

Os dados do formulário são considerados uma opção, portanto, devem residir no objeto options. Parece que a função ainda aceita um parâmetro de string como o primeiro argumento para o URI, mas você pode omitir isso e adicioná-lo ao seu objeto de opções, se preferir - as duas maneiras funcionaram para mim. Apenas certifique-se de passar apenas um objeto de opções.

Espero que isso ajude qualquer pessoa que se encontre aqui.

@maxgardner obrigado pela informação! Este tíquete continua me pingando 'me toos' nos últimos dois anos ...

A solução de @maxgardner funcionou

Se você estiver usando colchetes para colocar seu url, não feche e abra outro depois dele apenas para colocar suas opções de cabeçalho, dados de formulário ou outras coisas, todos eles devem estar dentro dos primeiros colchetes.

Mudei tudo junto e funcionou.

request.post({
      uri: form_url
      jar: true,
      form: {
        // form data
      }
    }, (err, res, body) => {
        // handle response
  }
});

(Snippet de @maxgardner)

Este problema pode ser encerrado.

Este problema foi marcado automaticamente como obsoleto porque não teve atividades recentes. Ele será fechado se nenhuma outra atividade ocorrer. Obrigado por suas contribuições.

guarda. os documentos ou o código devem mudar com base nas notas acima.

Este problema foi marcado automaticamente como obsoleto porque não teve atividades recentes. Ele será fechado se nenhuma outra atividade ocorrer. Obrigado por suas contribuições.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

jdarling picture jdarling  ·  3Comentários

lupo9557 picture lupo9557  ·  3Comentários

pixarfilmz112 picture pixarfilmz112  ·  3Comentários

chenby picture chenby  ·  3Comentários

ghost picture ghost  ·  3Comentários