2014-05-14 2 views
3

내가 명령Node.js를 HTTP POST 요청에 -d 해당 말림

curl -X POST -d 'some data to send' http://somehost.com/api 

var http = require('http'); 
var post_data = 'some data to send', 
    headers = { 
     host: 'somehost.com', 
     port: 80, 
     method: 'POST', 
     path: '/api', 
     headers: { 
      'Content-Length': Buffer.byteLength(post_data) 
     } 
    }; 

var request = http.request(headers, function(response) { 
    response.on('data', function(d) { 
     console.log(d); 
    }); 
}); 
request.on('error', function(err) { 
    console.log("An error ocurred!"); 
}); 
request.write(post_data)); 

request.end(); 

질문과 같은 일부 코드와 Node.js를 에뮬레이트 할 수 있다는 것을 알고있다 m은 cURL 명령의 노드에서 해당 노드를 찾습니다.

curl -d name="Myname" -d email="[email protected]" -X POST http://somehost.com/api 

어떻게 할 수 있습니까?

Cherrypy server like this one에 POST 요청을 보내고 요청을 완료 할 수 없기 때문입니다.

편집 솔루션, @mscdex 말했듯이, 요청 라이브러리이었다

내가 요청 라이브러리의 문제를 해결했습니다. 솔루션에 대한 내 코드는

var request = require('request'); 

request.post('http://localhost:8080/api', { 
    form: { 
    nombre: 'orlando' 
    } 
}, function(err, res) { 
    console.log(err, res); 
}); 

고맙습니다!

var post_data = 'name=Myname&[email protected]'; 

아니면 (특히 좋은됩니다 당신이 파일을 업로드 할 수있는 경우)을 위해 탈출 데이터와 다른 일을 처리하기 때문에 당신이 그것을 처리하기 위해 request 같은 모듈을 사용할 수 있습니다

답변

6

당신은 수동으로 인코딩 할 수 있습니다 너를 위해서.

+0

네 말이 맞아. 요청 라이브러리 문제를 해결했습니다. 솔루션 코드가 입니다. var request = require ('request'); request.post ("HTTP : // 로컬 호스트 : 8080/API '{ 형태 { 브레'올랜도 ' }} 함수 (ERR, 입술) { CONSOLE.LOG (ERR, 해상도) ; }}); 감사합니다. – Orlando

관련 문제