2014-04-10 6 views
0

Я использую socket для имитации http-запроса. вот моя программаобратный вызов события 'data' не вызван, почему?

var request = [ 
'GET/HTTP/1.1', 
'Host: www.baidu.com', 
'Connection: keep-alive', 
'Cache-Control: no-cache', 
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
'Pragma: no-cache', 
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36', 
'Accept-Encoding: gzip,deflate,sdch', 
'Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh-TW;q=0.4', 
'Cookie: BAIDUID=44BE959D153BFDD6BE362FAE150DF9BF:FG=1; H_PS_TIPFLAG=O; H_PS_TIPCOUNT=1; BD_CK_SAM=1; BDSVRTM=19; H_PS_PSSID=1439_5224_5849_5900_4759_5857_5919' 
].join('\r\n'); 
request += '\r\n'; 

var net = require('net'); 

var client = net.connect({ 
    port: 80, 
    host: 'www.baidu.com' 
}, function() { 
    console.log('client connected'); 
    client.write(request); 
}); 

client.on('data', function(data) { 
    console.log(data.toString()); 
    client.end(); 
}); 

client.on('end', function() { 
    console.log('client disconnected'); 
}); 

но обратный вызов события «данные» не вызывается, почему

ответ

2

.join не добавляет дополнительный \r\n в конце. Вам необходимо два тех, кто разделяет заголовок и корпус:

request += '\r\n\r\n'; 
Смежные вопросы