HTTP客户端之使用request方法向其他网站请求数据
在node中,可以很轻松的向任何网站发送请求并读取该网站的响应数据.
var req=http.request(options,callback);
options是一个字符串或者是对象.如果是字符串,将自动使用url模块中的parse方法转换为一个对象.options中可以指定以下属性.
host:用于指定域名或目标主机的IP地址,默认属性值为"localhost".
hostname:用于指定域名或目标主机的IP地址,默认属性为"localhost".如果hostname属性值与host属性值都被指定,优先使用hostname.
port:用于指定目标服务器用于HTTP客户端连接的端口号.
localAddress:用于指定专用于网络连接的本地接口.
socketPath:用于指定目标Unix域端口.
method:用于指定HTTP请求方式,默认属性值为"GET".
path:用于指定路径及查询字符串,默认属性值为"/".
headers:用于指定客户端请求头对象.
auth:用于指定认证信息部分.例如:"user:password".
agent:用于指定HTTP代理.在node中,使用http.Agent类代表一个HTTP代理.所谓HTTP代理,就是一个代表通过HTTP向其他网站请求数据的浏览器或者代理服务器.
在node中,HTTP代理默认在请求数据时使用keep-alive连接,同时使用一个全局的http.Agent对象来实现所有HTTP客户端请求.不使用agent属性值时,默认使用该全局http.Agent对象.可以为agent属性值显示指定一个http.Agent对象(即用户代理),也可以通过将agent属性值指定为false的方法从连接池中自动挑选一个当前连接状态为关闭的http.Agent对象(即用户代理)
var http=require("http");
var options={
hostname:"www.baidu.com",
port:80,
path:"/",
method:"GET"
};
var req=http.request(options,function(res){
console.log("状态码:"+res.statusCode);
console.log("响应头:"+JSON.stringify(res.headers));
res.setEncoding("utf8");
res.on("data",function(chunk){
console.log("响应内容:"+chunk);
});
});
req.end();
HTTP客户端设置超时和终止请求,并且用error监听socket端口错误.
var http=require("http");
var options={
hostname:"www.baiduuuuuuu.com",//这是一个不存在的网址
port:80,
path:"/",
method:"GET"
};
var req=http.request(options,function(res){
console.log("状态码:"+res.statusCode);
console.log("响应头:"+JSON.stringify(res.headers));
res.setEncoding("utf8");
res.on("data",function(chunk){
console.log("响应内容:"+chunk);
});
});
req.setTimeout(1000,function(){
req.abort();
});
req.on("error",function(err){
if(err.code==="ECONNRESET")//端口的超时错误
console.log("socket端口超时..");
else
console.log("在请求数据的过程中发生错误,错误代码:"+err.code);
});
req.end();
get方法向其他网站发送请求时和request的方法一样.不过get不需要手动调用end()方法,node会自动调用end().
可以对上面的代码做一下改动.
var http=require("http");
var options={
hostname:"www.baiduuuuuuu.com",//这是一个不存在的网址
port:80,
path:"/",
method:"GET"
};
var req=http.get(options,function(res){
console.log("状态码:"+res.statusCode);
console.log("响应头:"+JSON.stringify(res.headers));
res.setEncoding("utf8");
res.on("data",function(chunk){
console.log("响应内容:"+chunk);
});
});
req.setTimeout(1000,function(){
req.abort();console.log("终止亲求");
});
req.on("error",function(err){
if(err.code==="ECONNRESET")//端口的超时错误
console.log("socket端口超时..");
else
console.log("在请求数据的过程中发生错误,错误代码:"+err.code);
});
HTTP客户端之使用request方法向其他网站请求数据的更多相关文章
- Node.js 使用http客户端向网站请求数据并保存
app.js代码: // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=requir ...
- Django之--POST方法处理表单请求
上一篇:Django之--MVC的Model 演示了如何使用GET方法处理表单请求,本文讲述直接在当前页面返回结果,并使用更常用的POST方法处理. 一.首先我们修改下page.html <!D ...
- Asp.net Request方法获取客户端的信息
Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Wri ...
- c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVaria ...
- HttpServletRequest request方法详解
//1.获取请求参数 //获取参数的单个值,如有多个则只返回第一个 String parameter1 = request.getParameter("demo"); //获取参数 ...
- Ext.Ajax.request方法 参数
json数据服务器回传的方法. 在api总指出回传的格式{success;true,data:{clientName: "Fred. Olsen Lines", portOfL ...
- web服务器获取请求客户端真实地址的方法
服务器获取客户端或者网页的请求,获取IP时需要注意,因为一个请求到达服务器之前,一般都会经过一层或者多层代理服务器,比如反向代理服务器将http://192.168.1.10:port/ 的URL反向 ...
- python request(HttpRequest对象)请求的属性、方法笔记
1.属性 path:表示提交请求页面完整地址的字符串,不包括域名,如"/music/bands/the_beatles/". method:表示提交请求使用的HTTP方法.(GET ...
- 浅谈response和request方法
一:概述 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. 按这个理解的话一次请求生成一个request和res ...
随机推荐
- HM编码器代码阅读(1)——介绍以及相关知识
HM是HEVC(H.265)的开源实现,可以从网上直接下载.HEVC(H.265)是新一代的视频编解码标准.本人目前研究的只是编码器部分,而且还是入门阶段!为了提高自己,边学边记,由于理解不够深入,难 ...
- Miscosoft Visual Studio项目guid取值
There isn't an easy way to change the type of a project in Visual Studio project once it is created; ...
- javaScript高程笔记--最佳实践
1.可维护性 <1>什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 <2>代码约定 (1)可读性---适当的进行注释[函数和方 ...
- [AirFlow]AirFlow使用指南一 安装与启动
1. 安装 通过pip安装: xiaosi@yoona:~$ pip install airflow 如果速度比较慢,可以使用下面提供的源进行安装: xiaosi@yoona:~$ pip insta ...
- [GitHub] git push的时候报错 fatal: unable to access 'http://github.com/xxx/xxx.git/': Recv failure: Connection reset by peer
参考了两种方法: 1. 解决fatal: unable to connect to github.com问题 http://blog.csdn.net/greenqingqingws/article/ ...
- windows 10 安装 sql 2005 安装失败
windows 10 安装 sql 2005 安装失败 网上的方法记录: 安装中无法启动需要先用sp4的补丁文件sqlos.dll,sqlservr.exe 替换D:\Program Files (x ...
- test20190305
上午考试,是 \(SCOI\ 2016\ Day\ 1\) 的题目. 背单词 这题我以前是做过的.Trie树总结. #include<bits/stdc++.h> using namesp ...
- 访问Mat矩阵中的元素并为其赋值
在OpenCV中有三种方式访问矩阵中的数据元素:容易的方式,困难的方式,以及正确的方式.今天主要讲容易方式: 最容易的方式是使用宏CV_MAT_ELEM( matrix, elemtype, row, ...
- SQL Server 2008 R2占用内存越来越大解决方法
最近开发sql server数据库项目的过程中发现了这么一个问题,后台网站内存占用95%,通过任务管理器查看占内存的进程sqlserver.exe,是因为SQL Server 2008 R2运行越久, ...
- Clair:CoreOS发布的开源容器漏洞分析工具
Clair为何而生:提升安全 软件世界里,安全漏洞会一直存在.好的安全实践意味着要对可能出现的事故未雨绸缪 - 即尽早发现不安全的软件包,并准备好快速进行升级.而Clair就是设计来帮助你找出容器中可 ...