因此,我有一个简单的客户端应用程序与node.js中的服务器端应用程序进行通信。在客户端,我有以下代码:
function send (name) {
http.request({
host: '127.0.0.1',
port: 3000,
url: '/',
method: 'POST'
}, function (response) {
response.setEncoding('utf8');
response.on('data', function (data) {
console.log('did get data: ' + data);
});
response.on('end', function () {
console.log('\n \033[90m request complete!\033[39m');
process.stdout.write('\n your name: ');
});
response.on('error', function (error) {
console.log('\n Error received: ' + error);
});
}).end(query.stringify({ name: name})); //This posts the data to the request
}
奇怪的是,如果我不通过以下方式包含“数据”事件:
response.on('data', function (data) {
console.log('did get data: ' + data);
});
响应的“结束”事件永远不会触发。
服务器代码如下:
var query = require('querystring');
require('http').createServer(function (request, response) {
var body = '';
request.on('data', function (data) {
body += data;
});
request.on('end', function () {
response.writeHead(200);
response.end('Done');
console.log('\n got name \033[90m' + query.parse(body).name + '\033[39m\n');
});
}).listen(3000);
我想知道当文档(据我所知)不需要您监听数据事件以关闭响应会话时为什么会发生这种情况。
该'end'
只调用时所有的数据被消耗,检查下面的参考:
事件:“结束”
当不再提供任何数据时将触发此事件。
请注意,除非完全消耗了数据,否则不会触发end事件。可以通过切换到流模式或重复调用read()直到结束来完成此操作。
但是,为什么需要致电.on('data',..)
?答案是
如果您附加了数据事件侦听器,则它将把流切换到流模式,并且数据将在可用时立即传递给您的处理程序。
因此,基本上,通过添加data
侦听器,它将流转换为流模式并开始使用数据。
请检查此链接以获取更多参考。
我有一个小程序发送http请求并用TCP协议得到响应。 我的请求格式; 我从套接字逐行读取响应(在c#中使用NetworkStream和StreamReader),直到找到内容长度的标头。我存储长度,然后继续读取,直到找到空行。然后创建一个带有长度的缓冲区并接收其余的响应。 但有些响应没有内容长度标题。所以我的方法失败了。如果我不知道应该接收多少字节,我应该何时停止?
响应事件 function onResponse(Request $request,Response $response); 在任何的控制器响应结束后,均会执行该事件,该事件预留于做分析记录。例如结合onRequest事件做慢日志记录。 function onRequest(Request $request, Response $response) { // TODO: Implement
问题内容: 我正在使用Node的模块发出 HTTP 请求,但是在上,返回的块似乎并不满足完整的请求响应。这是我的代码: 有没有办法在结束请求之前等待完整的输出?难道我做错了什么?谢谢! 问题答案: 您还应该收听“结束”事件
事情是这样的: 我正在为我的论文创建一个完全定制的服务器。在客户端,我希望能够请求服务器处理的数据库调用。然后,它以HTTP给出响应,以JSON提供查询结果。 我现在调用的方式是:使用JQuery的“getJSON()”方法。 虚拟示例: 在浏览器中运行带有此脚本的网页会在服务器端生成以下HTTP标头: 我的问题是:为了从浏览器上javascript的“result”参数中的响应中获得JSON负载
我尝试通过Java执行一个SOAP请求并获得SOAP响应,然后从JSP页面调用它。我研究了许多网站,尝试了许多方法,但似乎无法让它工作。 我使用一些wsdl来测试http://www.webservicex.net/australianpostcode.asmx?wsdl 我一直收到这个错误 java.io.ioException:服务器返回HTTP响应代码:500的URL:HTTP://www.
问题内容: 我有一个使用从扩展的类的子类 我将一个对象添加到框架-中。现在,当我按下任意键盘键时,不会调用任何方法,并且似乎没有窗口焦点。我也尝试过调用,但仍然没有响应。 如何使它响应按键? 问题答案: 您是否为面板设置了面板本身?另外,您可能需要将面板设置为可聚焦。我通过此代码对其进行了测试,它似乎可以正常工作