在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方法向其他网站请求数据的更多相关文章

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

    app.js代码: // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=requir ...

  2. Django之--POST方法处理表单请求

    上一篇:Django之--MVC的Model 演示了如何使用GET方法处理表单请求,本文讲述直接在当前页面返回结果,并使用更常用的POST方法处理. 一.首先我们修改下page.html <!D ...

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

    Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Wri ...

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

    客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString();  客户端主机名: Request.ServerVaria ...

  5. HttpServletRequest request方法详解

    //1.获取请求参数 //获取参数的单个值,如有多个则只返回第一个 String parameter1 = request.getParameter("demo"); //获取参数 ...

  6. Ext.Ajax.request方法 参数

    json数据服务器回传的方法. 在api总指出回传的格式{success;true,data:{clientName: "Fred. Olsen Lines",   portOfL ...

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

    服务器获取客户端或者网页的请求,获取IP时需要注意,因为一个请求到达服务器之前,一般都会经过一层或者多层代理服务器,比如反向代理服务器将http://192.168.1.10:port/ 的URL反向 ...

  8. python request(HttpRequest对象)请求的属性、方法笔记

    1.属性 path:表示提交请求页面完整地址的字符串,不包括域名,如"/music/bands/the_beatles/". method:表示提交请求使用的HTTP方法.(GET ...

  9. 浅谈response和request方法

    一:概述 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. 按这个理解的话一次请求生成一个request和res ...

随机推荐

  1. vim+ctags用法

    vim用法     在VIM编辑器的环境下用":make"就可以编译程序,如果程序中有错误,就会显示出来.          下列命令可以快速定位,并修改错误错误 ":c ...

  2. Python的介绍及Pycharm软件的安装

    一.Python介绍 1.  Python是一种解释性.面向对象.动态数据类型的高级程序设计语言. Python语言创始人是吉多.范罗苏姆:起源与1989年 2.  缺点:运行速度慢(由于是解释性语言 ...

  3. yii2.0 使用不同语言

    1.建立语言目录.文件.项目根目录建立messages文件夹.存放不同语言对应的目录文件. 例如中文和英文 message 下建立两个文件夹 en.zh_CN 里面可以对应着多个翻译文件 2.在mai ...

  4. final方法,abstract方法和abstract类,native方法

    final方法 1.为了确保某个函数的行为在继承过程中保持不变,并且不能被覆盖(override),可以使用final方法. 2.为了效率上的考虑,将方法声明为final,让编译器对此方法的调用进行优 ...

  5. SpringMVC札集(07)——JSON数据

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  6. Ethernet、VLAN、QinQ

    以太网帧格式: 各字段解释: DMAC:目的MAC地址,该字段确定帧的接收者. SMAC:源MAC地址,该字段标识发送帧的工作站. Type:上层协议类型(0x0800:IP;0x0808:ARP;0 ...

  7. Redis安全性配置

    最近Redis刚爆出一个安全性漏洞,我的服务器就“光荣的”中招了.黑客攻击的基本方法是: 扫描Redis端口,直接登录没有访问控制的Redis 修改Redis存盘配置:config set dir / ...

  8. Django项目部署(阿里云)(2)--扩展

    新博客地址:http://muker.net/django-server-two.html 前面的只是最简单的部署,真实情况总是更复杂一点实际流程大概是这么操作的(我这种菜鸟的想法):本地写代码-&g ...

  9. appium-java,连接真机启动微信

    1.启动appium 2.设置信息 3.设置IP和端口 4.appium连接手机,微信中打开debugx5.qq.com,信息->TBS settings->是否打开TBS内核Insper ...

  10. selenium-java,UI自动化截图方法

    截图方法: import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; impor ...