3

シンプルな node.js プロキシをセットアップして、投稿を Web サービス (この例では CSW) に送信しようとしています。

リクエストボディにXMLを投稿し、text/xmlを指定しています。-- サービスにはこれらが必要です。

req.rawBody var で生の xml テキストを取得し、正常に動作しますが、適切に再送信できないようです。

私の方法は次のようになります。

app.post('/csw*', function(req, res){


  console.log("Making request to:"  + geobusOptions.host + "With query params: " + req.rawBody);


request.post(
    {url:'http://192.168.0.100/csw',
    body : req.rawBody,
    'Content-Type': 'text/xml'
    },
    function (error, response, body) {        
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    }
);
});

content-type text/xml を使用して、POST で文字列を送信したいだけです。しかし、私はこれを達成できないようです!

「リクエスト」ライブラリ @ https://github.com/mikeal/requestを使用しています

編集 -- おっと!ヘッダーを追加するのを忘れていました...

これはうまくいきます:

request.post(
    {url:'http://192.168.0.100/csw',
    body : req.rawBody,
    headers: {'Content-Type': 'text/xml'}
    },
    function (error, response, body) {        
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    }
);
4

1 に答える 1

8

最終的には、nodeJS プロキシ リクエストの本文を再送信するために、次の方法を使用しました。

request.post(
    {url:'http://192.168.0.100/csw',
    body : req.rawBody,
    headers: {'Content-Type': 'text/xml'}
    },
    function (error, response, body) {        
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    }
);

次のコードを使用して rawbody を取得します。

app.use(function(req, res, next) {
  req.rawBody = '';
  req.setEncoding('utf8');

  req.on('data', function(chunk) { 
    req.rawBody += chunk;
  });

  req.on('end', function() {
    next();
  });
});
于 2013-10-03T13:42:16.470 に答える