在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. vue.js 源代码学习笔记 ----- 工具方法 error

    import config from '../config' import { warn } from './debug' import { inBrowser } from './env' // 这 ...

  2. 配置wampserver 虚拟主机

    1.修改http.conf 找到,#Include conf/extra/httpd-vhosts.conf,修改为(有的版本服务器,默认是开启的): 2.配置httpd-vhosts.conf文件, ...

  3. IOS开发 多线程GCD

    Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. dispatch queue分成以下三种: 1)运行在主线程的Main queue,通过dispat ...

  4. Git+GitHub+SaltStack

    本文主要介绍日常工作中会经常使用到的一些工具软件. [ 01 ]SaltStack简明教程 [ 02 ]Git 中文教程 Git详解之一 Git起步 Git详解之二 Git基础  Git详解之三 Gi ...

  5. Linux下iptables介绍

    ptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,outp ...

  6. 博客迁移至“零一积流|it-refer.com”

    虽然在博客园写了没几篇文章,考虑到个人发展,自己还是建立一个独立的站点:零一积流. 以后直接在自己网站上写东西了,此处只用做文章收藏.

  7. flask第十三篇——url注意事项

    先和大家说一下常用的请求方法 get:只是从服务器获取数据,不会对服务器的状态或数据产生任何影响: get方法的参数是放在URL中传递的. post:会对服务器的状态或数据产生影响:通过body形式进 ...

  8. HTML5的28个常用特性

    1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<figure>和<figcapt ...

  9. wpf 动态得到label的宽度(无刷新情况)

    var l =newLabel(){Content="Hello"}; l.Measure(newSize(double.PositiveInfinity,double.Posit ...

  10. wordpress域名解析到了网站,但是点击其他页面会出现ip而不是域名

         1.前提域名可以访问你的网站证明解析没问题 2.那就是wp后台的设置问题,将url和站点url改为你的域名http://www.eovision.cc清理缓存即可 亲测可用,如果改了出现页面 ...