我試圖通過PHP cURL發送一個post請求給我的node.js服務器,然後向客戶端發送消息。服務器運行和設置如下:用PHP cURL向Node.js發送Post請求
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
, qs = require('querystring')
app.listen(8000);
function handler(req, res) {
// set up some routes
switch(req.url) {
case '/push':
if (req.method == 'POST') {
console.log("[200] " + req.method + " to " + req.url);
var fullBody = '';
req.on('data', function(chunk) {
fullBody += chunk.toString();
if (fullBody.length > 1e6) {
// FLOOD ATTACK OR FAULTY CLIENT, NUKE REQUEST
req.connection.destroy();
}
});
req.on('end', function() {
// Send the notification!
var json = qs.stringify(fullBody);
console.log(json.message);
io.sockets.emit('push', { message: json.message });
// empty 200 OK response for now
res.writeHead(200, "OK", {'Content-Type': 'text/html'});
res.end();
});
}
break;
default:
// Null
};
}
和我的PHP如下:
$curl = curl_init();
$data = array('message' => 'simple message!');
curl_setopt($curl, CURLOPT_URL, "http://localhost:8000/push");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_exec($curl);
控制檯說,json.message是不確定的。爲什麼沒有定義?
你爲什麼不加入的console.log(Fullbody中),看看你正在處理?我懷疑錯誤是身體不符合你的期望。 –
謝謝隊友!剛剛解決了這個問題。 fullBody var現在按預期工作,所以json實際上應該= qs.parse(fullBody),而不是qs.stringify(fullBody)。 – Sneaksta