2011-06-29 10 views
0

リクエスト本体からデータを読み取り、ファイルを作成してデータを書き込む必要がある場合があります。操作が成功した場合は、レスポンスヘッダーを201に設定し、Locationヘッダーにファイルの場所を追加します。ファイルの作成はJavaメソッドを使用して行われ、node.jsコードは以下のとおりです。POSTメソッドでnode.jsにヘッダーを設定できません

var server = http.createServer(function(req, res) 
    { 
     var body = ""; 
     req.on("data", function(chunk) 
     { 
      body += chunk.toString(); 
     }); 

     req.on("end", function() {   
      var rtn = obj.AddonPostMethod(filepath,body);       
      if(rtn.length < 13) 
      { 
       res.writeHead(201, {"Location" : rtn}); 
       res.end(); 
      } 
      else 
      { 
       res.writeHead(400, {"Content-Type" : application/json"}); 
       res.write(''+rtn); 
       res.end(); 
      } 

     }); 
}}); 

問題は、応答ヘッダーが更新されず、常にデフォルトのヘッダー200 Okに設定されていることです。これに加えて、サーバーは応答が受信された後も常にビジー状態です。

+0

は申し訳ありません見つけることができますか? var rtn = obj.AddonPostMethod(filepath、body);あなたは物事を残しているようだ。 D – megakorre

答えて

0

あなたが参照しているコードを実際にポートで受信しているとは思われません。

var http = require('http'); 
http.createServer(function(req,res){ 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(8000); 
console.log('Server running at http://127.0.0.1:8000/'); 

あなたが実際に.listen()機能を持つポート/ IP上でリスニングなどのHTTPオブジェクトを宣言することはありません。

また、reqオブジェクトが応答するために何かを放射するのを待つ必要はありません。要求が完了すると関数が呼び出されます。 http.Serverオブジェクトを変数に格納することで、特定の要求をリッスンし、適切にルーティングすることができます。

var server = http.createServer(); 
server.listen(8000); 

server.on('request', function(req,res){ /* do something with the request */ }); 

もっとHTTPオブジェクト上のドキュメントには、あなたがこれを明確にすることができますon the node.js documents for http

+0

申し訳ありませんが、私はすでに上記の関数の直後に 'server.listen(8080);を持っていますが、あなたはあなたの体をチャンクする必要はありません。そして私はすべての要求に対して私のサーバーを立ち上げて稼働させる必要があります。メソッドがGET、PUT、DELETEのために完全に動作している間に、メソッドが失敗しているリスナーを使用しているPOST reqでのみ使用できます。 – Ojas

関連する問題