NodeJS - 请求库返回的请求[错误:无效协议:127.0.0.1:]

时间:2016-03-17 15:50:42

标签: node.js client

我已启动并运行ExpressJS教程服务器:

var express = require( 'express' );
var app = express();

app.get( '/', function( req, res ) {
    console.log( "Got a GET request for the homepage" );
    res.send( 'Hello GET!' );
} );

app.post( '/', function( req, res ) {
    console.log( "Retrieved a post request" );
    res.send( 'Hello POST' );
} );

app.delete( '/del_user', function( req, res ) {
    console.log( "Got a DELETE request for /del_user" );
    res.send( 'Hello DELETE' );
} );

app.get( '/list_user', function( req, res ) {
    console.log( "Got a GET request for /list_user" );
    res.send( 'Page Listing' );
} );

app.get( '/ab*cd', function( req, res ) {
    console.log( "Got a GET request for /ab*cd" );
    res.send( 'Page pattern match' );
} );

var server = app.listen( 8081, function() {
    var host = server.address().address;
    var port = server.address().port;
     console.log( "Example app listening at http://%s:%s", host, port );
} );

我想通过使用请求库构建一次性NodeJS客户端来测试app.post函数,以便向服务器发送POST请求 - 使用来自另一个NodeJS相关问题问题的代码:

var request = require('request');

var myJSONObject = {};

request( {
        url: "http://127.0.0.1:8081/",
        method: "POST",
        json: true,
        body: myJSONObject
    }, function (error, response, body) {
        if ( error ) {
            console.log( error );
            return;
        }
        console.log(response);
    } 
);

运行客户端部分后,我在错误变量中收到此错误:

[错误:无效协议:127.0.0.1:]

修改

我刚在家用电脑上运行它,它没有问题。也许在工作中的一些设置是错误的。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

按照npm请求包网站上的代码docs ...

https://www.npmjs.com/package/request

示例:

request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) {
  if (err) {
    return console.error('upload failed:', err);
  }
   console.log('Upload successful!  Server responded with:', body);
});

答案 1 :(得分:0)

而不是json: truebody: someObject,请尝试json: someObject

答案 2 :(得分:0)

您将NodeJS库中的http.request与NPM中提供的请求包混合在一起。你是require后者,但试图使用前者的语法。 只需更改客户的第一行

即可
var request = require('request');

var request = require('http').request;

它应该顺利。

编辑:您还必须将最后一行切换为

).end();