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对象(即用户代理)

 1 var http=require("http");
 2 var options={
 3   hostname:"www.baidu.com",
 4     port:80,
 5     path:"/",
 6     method:"GET"
 7 };
 8 var req=http.request(options,function(res){
 9     console.log("状态码:"+res.statusCode);
10     console.log("响应头:"+JSON.stringify(res.headers));
11     res.setEncoding("utf8");
12     res.on("data",function(chunk){
13         console.log("响应内容:"+chunk);
14     });
15 });
16 req.end();

HTTP客户端设置超时和终止请求,并且用error监听socket端口错误.

 1 var http=require("http");
 2 var options={
 3     hostname:"www.baiduuuuuuu.com",//这是一个不存在的网址
 4     port:80,
 5     path:"/",
 6     method:"GET"
 7 };
 8 var req=http.request(options,function(res){
 9     console.log("状态码:"+res.statusCode);
10     console.log("响应头:"+JSON.stringify(res.headers));
11     res.setEncoding("utf8");
12     res.on("data",function(chunk){
13         console.log("响应内容:"+chunk);
14     });
15 });
16 req.setTimeout(1000,function(){
17     req.abort();
18 });
19 req.on("error",function(err){
20     if(err.code==="ECONNRESET")//端口的超时错误
21         console.log("socket端口超时..");
22     else
23         console.log("在请求数据的过程中发生错误,错误代码:"+err.code);
24 });
25 req.end();

get方法向其他网站发送请求时和request的方法一样.不过get不需要手动调用end()方法,node会自动调用end().

可以对上面的代码做一下改动.

 1 var http=require("http");
 2 var options={
 3     hostname:"www.baiduuuuuuu.com",//这是一个不存在的网址
 4     port:80,
 5     path:"/",
 6     method:"GET"
 7 };
 8 var req=http.get(options,function(res){
 9     console.log("状态码:"+res.statusCode);
10     console.log("响应头:"+JSON.stringify(res.headers));
11     res.setEncoding("utf8");
12     res.on("data",function(chunk){
13         console.log("响应内容:"+chunk);
14     });
15 });
16
17 req.setTimeout(1000,function(){
18     req.abort();console.log("终止亲求");
19 });
20 req.on("error",function(err){
21     if(err.code==="ECONNRESET")//端口的超时错误
22         console.log("socket端口超时..");
23     else
24         console.log("在请求数据的过程中发生错误,错误代码:"+err.code);
25 });
时间: 2024-10-12 23:50:24

HTTP客户端之使用request方法向其他网站请求数据的相关文章

Node.js 使用http客户端向网站请求数据并保存

app.js代码: // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=require('fs'); // 创建一个将流数据写入文件的WriteStream对象 var outstream=fs.createWriteStream('./retval.html'); // 请求参数JSON var options={ hostname:'www.cnblogs.com',// 这里别加htt

通过 httpclientget 方法 向服务器中请求数据

/*   * 通过 httpclientget 方法 向服务器中请求数据   */ public String getweb(String username, String userpass, String url) { String str = ""; StringBuffer sb = new StringBuffer(url); sb.append("?username="); sb.append(username); sb.append("&

小程序,wx.request;动态向服务器端请求数据。

wx.request 通过微信封装的ajax,动态向服务器端请求数据.以下是在练习微信小程序时写的测试代码. 其中index.js文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 //测试: wx.request({      url:'http://hd.jz-lm.com/mobile/Ceshi/index',      method: 'GET',      data: {},      header: {          'Ac

Asp.net Request方法获取客户端的信息

Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Write("客户端IP:" + Request.UserHostAddress + "<BR />"); Response.Write("浏览器:" + Request.Browser.Browser + "<BR />

c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明

客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariables.Get("Remote_Host").ToString(); 客户端浏览器IE: Request.Browser.Browser; 客户端浏览器 版本号: Request.Browser.MajorVersion;// 客户端操作系统: Request.Browser.Platfo

获取客户端真实IP——request.getHeader(&quot;x-forwarded-for&quot;)

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP. 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过

web服务器获取请求客户端真实地址的方法

服务器获取客户端或者网页的请求,获取IP时需要注意,因为一个请求到达服务器之前,一般都会经过一层或者多层代理服务器,比如反向代理服务器将http://192.168.1.10:port/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemoteAddr() 方法获取的IP地址是:127.0.0.1 或 192.168.1.10 ,而并不是客户端的真实IP.但在经过代理服务器之后,请求头中都会多一些字段,我们可以根据这些字段来获取真实的IP而不是经

用javascript得到客户端IP的新方法

javascript得到客户端IP的新方法 很久以来,我都是经过http://fw.qq.com/ipaddress来得到客户端用户的IP,这个方法简单.快速.实用 . 我们调用它的写法是: <script type="text/javascript" src="http://fw.qq.com/ipaddress"></script> 它可以返回用户IP和地点,比喻: var IPData = new Array("220.181

TortoiseSVN客户端安装及使用方法

一.客户端TortoiseSVN的安装 运行TortoiseSVN程序,点击Next,下面的截图顺序即为安装步骤: 二.客户端TortoiseSVN的使用方法 1. 签入源代码到SVN服务器 假如我们使用Visual Studio在文件夹StartKit中创建了一个项目,我们要把这个项目的源代码签入到SVN Server上的代码库中里,首先右键点击StartKit文件夹,这时候的右键菜单如下图所示: 点击Import,弹出下面的窗体,其中http://zt.net.henu.edu.cn 是服务