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 ...
随机推荐
- pcm ulaw alaw转换
static byte ALawCompressTable[] = { 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5 ...
- 从JDK源码角度看Byte
Java的Byte类主要的作用就是对基本类型byte进行封装,提供了一些处理byte类型的方法,比如byte到String类型的转换方法或String类型到byte类型的转换方法,当然也包含与其他类型 ...
- 基于视觉的 SLAM/Visual Odometry (VO) 开源资料、博客和论文列表
基于视觉的 SLAM/Visual Odometry (VO) 开源资料.博客和论文列表 以下为机器翻译,具体参考原文: https://github.com/tzutalin/awesome-vis ...
- [知识图谱] 环境配置:Java8 + Maven3 + HBase + Titan
1.Java Java8安装配置 2.Maven Linux下的Maven安装与配置 3.Hbase 官方安装教程:http://s3.thinkaurelius.com/docs/titan/1.0 ...
- python爬虫入门(2)re模块-正则表达式
正则表达式 search //匹配第一次遇到符合规则的 匹配IP地址 import re re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3 ...
- I.MX6 U-Boot mkconfig hacking
/**************************************************************************** * I.MX6 U-Boot mkconfi ...
- Roslyn 语法树中的各种语法节点及每个节点的含义
使用 Roslyn 进行源码分析时,我们会对很多不同种类的语法节点进行分析.如果能够一次性了解到各种不同种类的语法节点,并明白其含义和结构,那么在源码分析的过程中将会更加得心应手. 本文将介绍 Ros ...
- WPF 跨应用程序域的 UI(Cross AppDomain UI)
为自己写的程序添加插件真的是一个相当常见的功能,然而如果只是简单加载程序集然后去执行程序集中的代码,会让宿主应用程序暴露在非常危险的境地!因为只要插件能够运行任何一行代码,就能将宿主应用程序修改得天翻 ...
- fpga rom 初始化mif文件生成
mif文件的格式 width= depth= address_radix= data_radix= content begin 00: ; 01: ; 02: ; .... end; 关 ...
- 【java多线程】用户线程和守护线程的区别
java中线程分为两种类型:用户线程和守护线程.通过Thread.setDaemon(false)设置为用户线程:通过Thread.setDaemon(true)设置为守护线程.如果不设置次属性,默认 ...