XmlHttp对象简介

HttpRequest对象 是最近两年炒得很“热”的AJAX的基础。使用XMLHTTP组件,开发人员可以不用从当前的Web页面导航而直接传输数据到服务器上或者从服务器取数据。这个功能是重要的,因为它帮助减少了无状态连接的痛苦。它还可以排除下载冗余HTML的需要,从而提高进程的速度。

什么是HttpRequest对象

背景

HttpRequest对象是最近两年炒得很“热”的AJAX的基础。使用XMLHTTP组件,开发人员可以不用从当前的Web页面导航而直接 传输数据到服务器上或者从服务器取数据。这个功能是重要的,因为它帮助减少了无状态连接的痛苦。它还可以排除下载冗余HTML的需要,从而提高进程的速度。

Mozilla做出的回应是创建它自己的继承XML代理类:XMLHttpRequest类。对于大多数情况,XMLHttpRequest对象的行为很像XMLHTTP组件。这就意味着你可以使用很多与XMLHTTP组件相同的帮助信息。方法和属性类似,然而,所有的方法和属性都是以小写字母开头,并且还有一些属性不支持。

HttpRequest对象能够直接在客户端VBScript或Javascript程序代码发送HTTP请求,可以在客户端的网页直接执行基于WEB的应用程序,并且在客户 端和服务器端应用程序使用HTTP发送数据。

HttpRequest对象的版本是从2.0开始的,各版本的ProgID字符串不一样,目前是6.0。

建立HttpRequest的代码是:

//对于IE浏览器
var XMLHTTP= new ActiveXObject("MSXML2.XMLHTTP");
//对于非IE浏览器
var XMLHTTP= new XMLHttpRequest();

HttpRequest对象有以下属性:

属性 说明
readyState 只读属性,目前状态的长整数,值4表示请求处理完成
responseBody 只读属性,获取服务器的响应,返回非符号的字节数组
responseSteam 返回数据流对象
responseText 只读属性,获取服务器的响应,返回字符串
responseXML 只读属性,获取服务器的响应,返回XML DOM对象
status 只读属性,获取HTTP状态码,例如200、302等
statusText 获取HTTP状态信息字符串,例如OK
onreadystatechange 读写属性,执行readyState属性改变的事件处理,设定处理程序

HttpRequest对象有以下方法:

方法 说明
abort(); 取消当前的HTTP请求
getAllResponseHeaders() 获取全部HTTP标头的内容
getResponseHeader(HeaderName) 获取全部HTTP标头名称的内容
send() 发送HTTP请求到服务器
setRequestHeader(HeaderName,value) 用户自定义的HTTP标头数据

HttpRequest对象获取和发送XML

XMLHTTP 用于通过HTTP请求来发送或接受XML信息。实际上XMLHTTP还有其他的很多用途。可以用它来向服务器发送命令(可用 XML, string, stream, 或unsigned array)。命令也可以作为URL的参数还可以向客户端发送结果信息( XML, string, stream或unsigned array)

在客户端使用XMLHTTP很简单,只有5步:

  1. 创建XMLHTTP对象。
  2. 指定方法,URL以及验证,用open()方法对服务器打开XMLHTTP。打开方法可以是POSTGET
  3. 使用send()方法,向服务器发送request 信息。
  4. 等待,直到从服务器接受到结果。
  5. 释放XMLHTTP对象。

读取和设定HttP前缀内容

HttpRequest对象能够新增用户自定义的HTTP标头名称和内容,使用的是setRequestHeader方法。响应程序代码如下:

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<%
//不存储在客户端缓冲
Response.Expires = 0;
//返回用户自定义的标头数据;
Response.Write(Request.ServerVariables("HTTP_nickname"));
%>

点击查看实例效果。

readyState属性

说明
0(未初始化) 还没有调用send()方法
1(载入) 已调用send()方法,正在发送请求
2(载入完成) send()方法执行完成,已经接收到全部响应内容
(3交互) 正在解析响应内容
4(完成) 响应内容解析完成,可以在客户端调用了

如果主从架构的应用程序需要异步方式提出HTTP请求,onreadystatechange属性能够设定服务器响应后的处理程序,而不影响客户端程序的运行。

下面的例子演示当XMLHTTPRequest对象的readyState属性改变时调用HandleStateChange函数,当数据接收完毕后(readystate == 4),此页面上的 将显示欢迎信息。响应程序代码如下:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Xml" %>
<script runat="server">
private void Page_Load(object sender, System.EventArgs e) 
{
	Stream inStream=Request.InputStream;
	if (inStream.Length > 0)
	{
		XmlReader reader = XmlReader.Create(Request.InputStream);
		reader.ReadToFollowing("student");
		string name = reader.GetAttribute("name");
		reader.Close();
		Response.Write("你好,"+name);
	}
}
</script>

发表评论