node.js http客户端

     一、http模块提供了两个函数http.request和http.get,功能是作为客户端向HTTP服务器发起请求。

Ext.Ajax.request({},function(response))

            1.http.request(options,callback)发起HTTP请求,接受两个参数,option是一个类似关联数组的对象,表示请求的参数,callback是请求的回调函数,option常用的参数如下

host:请求网站的域名或IP地址
port:请求网站的端口,默认是80,
method:请求方法,模式是GET/POST
path:请求的相对于根的路径,默认是"/"。QueryString应该包含在其中,例如/search?query=marico
headers:一个关联数组对象,为请求头的内容
callback传递一个参数,为http.ClientResponse的实例
http.request返回一个http.ClientRequest的实例
案例:clientRequest.js
var http=require('http');
var querystring=require('querystring');
//启动服务
http.createServer(function(req,res){console.log('请求到来,解析参数');//解析post请求var post='';req.on('data',function(chunk){post+=chunk;});req.on('end',function(){post=querystring.parse(post);//解析完成console.log('参数解析完成,返回name参数');res.end(post.name);});
}).listen(3000);//客户端请求
var contents=querystring.stringify({name:'marico',age:21,address:'beijing'
});
//Ext.encode();
//声明请求参数
var options={host:'localhost',path:'/',port:3000,method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded','Content-Length':contents.length}
};
//发送请求
var req=http.request(options,function(res){res.setEncoding('utf-8');res.on('data',function(data){console.log('后台返回数据');console.log(data);})
});
req.write(contents);
//必须调用end()
req.end();





            2.http.get(options,callback) http模块还提供了一个更加简便的方法用于处理GET请求:http.get。它是http.request的简化版,唯一的区别在于http.get自动将请求方法设为GET请求,同时不需要手动调用req.end();

案例:clientGet.js
var http=require('http');
var url=require('url');
var util=require('util');
//启动服务
http.createServer(function(req,res){console.log('请求到来,解析参数');var params=url.parse(req.url,true);console.log('解析完成');console.log(util.inspect(params));console.log('向客户端返回');res.end(params.query.name);
}).listen(3000);//客户端请求
var request=http.get({host:'localhost',path:'/user?name=marico&age=21',port:3000},function(res){res.setEncoding('utf-8');res.on('data',function(data){console.log(' 服务端相应回来的数据为:'+data);})
});


    二、http.ClientRequest

该对象是由http.request或http.get返回产生的对象,表示一个已经产生而且正在进行的HTTP请求,它提供了response事件,即http。request或http.get第二个参数制定的回调函数的绑定对象,请求必须调用end方法结束请求。
提供的函数:
request.abort() 终止正在发送的请求
request.setTimeout(timeout,[callback]) 设置请求超时时间,timeout为毫秒数,当请求超时后,callback将会被调用
其它:request.setNoDelay([noDelay])、request.setScoketKeepAlive([enable],[initialDelay])等函数。
API地址:http://nodejs.org/api/http.html

    三、http.ClientResponse

http.ClientReponse是与http.ServerResponse相似,提供三个事件,data、end和close,分别在数据到达,传输结束和连接结束时触发,其中data事件传递一个参数chunk,表示接受到的数据
属性,表示请求的结果状态
statusCode   HTTP状态码,如200,404,500
httpVersion:HTTP协议版本
headers:HTTP请求头
trailers:HTTP请求尾
函数:
response.setEncoding([encoding]):设置默认的编码,当data事件被触发时,数据将以encoding编码。默认值为null,以buffer的形式存储。
response.pause():暂停接受数据和发送事件,方便实现下载功能。
response.resume():以暂停的状态中恢复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CDH kerberos 认证,安全认证

环境centos 7.4 安装KDC服务 yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation 修改配置文件 vi /etc/krb5.conf 默认如下 修改为 # Configuration snippets may be placed in this directory as well includedir /etc/krb5.conf.d/[logging]default…

虚拟继承和虚表

普通继承和虚拟继承类的大小变化: 普通继承: 虚拟继承: 类A和类B大小为: 由此可见:1、类中静态成员不会影…

Kerberos 下运行spark 报错 Requested user hdfs is not whitelisted and has id 995,which is below the minimu

异常如下 main : run as user is hdfs main : requested yarn user is hdfs Requested user hdfs is not whitelisted and has id 995,which is below the minimum allowed 1000 问题原因:是由于Yarn限制了用户id小于1000的用户提交作业; 解决方法&a…

kerberos 下运行spark 报错 Requested user hdfs is banned

启动运行报错 main : run as user is hdfs main : requested yarn user is hdfs Requested user hdfs is bannedFailing this attempt. Failing the application.ApplicationMaster host: N/AApplicationMaster RPC port: -1queue: root.defaultstart time: 1565170753121fina…

node.js路由控制

一、工作原理 当通过浏览器访问app.js建立的服务器时,会看到一个简单的页面,实际上它已经完成了许多透明的工作,当访问http://localhost:3000,浏览器会向服务器发送请求,包括请求的方法、路径、HTTP协议版本和请求头信…

node.js模块引擎

一、什么是模版引擎 模版引擎是一个从页面模版根据一定的规则生成HTML的工具,PHP首发,随后出现了ASP、JSP都沿用这个模式,即建立一个HTML页面模版,插入可执行的代码。运行时动态生成HTML。缺点: 页面功能逻辑与页面布局…

HBase ACL管理 Hbase 权限管理

场景:hadoop集群已经进行kerberos认证 启动Hbase相关配置Hbase权限分为以下五种:Read(R) : 可以读取给定范围内数据的权限 Write(W) : 可以在给定范围内写数据 Executor(X) : 可以在指定表执行Endpoints类型的协处理 Create(C) : 可以在给定范围内创建和…

MySql索引的原理

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用&#xff08…

Hadoop Kerberos 认证下 Sentry 安装 + Sentry 权限设置使用

目录 一、安装Sentry 1.MariaDB中创建sentry数据库 2.CDH中添加sentry 服务 3.hive配置 启动Sentry 4.Impala配置 启动Sentry 5.Hue配置 启动Sentry 6.Hdfs配置 启动Sentry 7.重启服务,使配置生效 二、Sentry权限测试 1.创建hive超…

mongodb最详细的安装与配置

今天晚上才装好,我觉得有必要写这篇文章给你们分享一下 我是看点击打开链接这位博主的文章才装好的其中我想引用里面内容从头到尾来给你们 分享一下流程 第一步:下载mongodb https://www.mongodb.com/download-center#community 第二步:m…

vue.js安装与配置

我们在前端学习中,学会了HTML、CSS、JS之后一般会选择学习一些框架,比如Jquery、AngularJs等。这个系列的博文是针对于学习Vue.js的同学展开的。 1.如何简单地使用Vue.js 如同以前我们学过的Jquery一样,我们在程序中使用Vue.js时也可以使用直…

Hbase WALs(HLog) 文件存储,查看

WALs(HLog) 存储 HLog 存储位置是在,hbase配置目录下WALs目录,默认为 /hbase/WALs 与 /hbase/oldWALs /hbase/WALs : 存储未过期的日志/hbase/oldWALs : 存储已过期的日志 这里先查看WALs日志目录,目录格式为:hostname1 为 …

Elasticsearch 6.x 下载安装

下载ES 下载ES安装包上传至服务器,地址为: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.0.tar.gz 上传完成后解压 tar -zxvf elasticsearch-6.1.0.tar.gz 安装JDK 这里使用jdk8,官网下载安装即可&#xf…

抽象工厂模式-与-工厂方法模式区别

首先来看看这两者的定义区别: 工厂模式:定义一个用于创建对象的借口,让子类决定实例化哪一个类 抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 个人觉得这个区别在于产品&#x…

Centos7.x 安装 CDH 6.x

前置条件 ntp服务安装防火墙关闭 执行以下优化代码 systemctl stop firewalld.service echo "* soft nofile 128000" >>/etc/security/limits.conf echo "* hard nofile 128000" >>/etc/security/limits.conf echo "* so…

Windows IEDA 编译Hbase源码报错 - 无法执行shell脚本

windows 下编译 hbase源码,报错 [ERROR] Command execution failed. java.io.IOException: Cannot run program "bash" (in directory "D:\File\ideaWorkspace\hbase-1.4.10-src\hbase-1.4.10\hbase-shaded\hbase-shaded-check-invariants\target\…

最新版 VMware 安装,虚拟机安装, Ubuntu可视化linux系统安装

一、下载 地址:https://www.vmware.com/cn.html 二、安装VM 选择相应配置,一直下一步即可 双击打开VMware,输入密钥:CG392-4PX5J-H816Z-HYZNG-PQRG2 Ubuntu 镜像下载地址: https://www.ubuntu.com/download/desktop/…

Flink 集群搭建安装 CentOS 7.x 版本

基本准备: JDK免密登录(不设置后期启动可以手动输入密码)Centos 7.x 一、下载Flink 下载地址:http://flink.apache.org/downloads.html 我这里使用:https://www.apache.org/dyn/closer.lua/flink/flink-1.9.0/flin…

web通讯录之登录注册界面

登录页面: 功能说明:登录页面是在页面模糊背景网站中找的素材加以修改成自己想要的登录界面,我们老师让我们在登录时候加验证码,看了大部分人用的是签名登录方式,觉得没有什么特色因此设计了滑动登录,把验证…

使用IntelliJ IDEA导入 Flink 消费kafka报错 Error: A JNI error has occurred, please check your installation an

提示找不到类,pom中已经引用了jar包,使用eclipse也可以执行,就是IntelliJ不行 java.lang.NoClassDefFoundError: org/apache/flink/api/common/serialization/DeserializationSchemaat java.lang.Class.getDeclaredMethods0(Native Method)a…