在asp中如何获取数据
一、区别与应用: Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下: 1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。 2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。 3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。 4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。 5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。 6、Get是Form的默认方法。 二、从HTML中发送数据,在ASP中如何接收? 在form表单的action属性值里面有一个相对路径指向asp文件。就是用这个asp文件来接收和处理的
1、HTTP请求概述
在前面有一篇文章对HTTP协议有详细的描述,这里就不再过多的做说明,只是简单的作为这篇文章的引子。
HTTP协议又被称为超文本传输协议,它的的设计目的是保证客户机与服务器之间的通信。HTTP 的工作方式是客户端与服务器之间的请求-应答协议。在客户端和服务器之间进行请求-响应时,有两个最基本的请求方式:GET 和 POST。
其中,GET请求表示从指定的资源请求数据,POST请求表示向指定的资源提交要被处理的数据。
2、HTTP请求格式
在HTTP请求中,首先是请求行,注意这里的请求行一定要放在最前面;其次,是请求头,英文表示为header;然后会空一行,紧接着就可以是请求的具体内容了,一般称之为请求体,request-body。给出一个图示如下:
3、GET请求与POST请求对比
GET请求与POST请求有一些异同点,主要有以下几点问题:
(1)、GET请求和POST请求都是客户端与服务器之间交互,请求--应答模式的协议
(2)、GET请求是通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;而POST请求是放在请求头中的,我们是无法直接看到的;
(3)、GET提交有数据大小的限制,一般是不超过1024个字节,而这种说法也不完全准确,HTTP协议并没有设定URL字节长度的上限,而是浏
览器做了些处理,所以长度依据浏览器的不同有所不同;POST请求在HTTP协议中也没有做说明,一般来说是没有设置限制的,但是实际上浏览器也有默认
值。总体来说,少量的数据使用GET,大量的数据使用POST。
(4)、GET请求因为数据参数是暴露在URL中的,所以安全性比较低,比如密码是不能暴露的,就不能使用GET请求;POST请求中,请求参数信息是放在请求头的,所以安全性较高,可以使用。在实际中,涉及到登录操作的时候,尽量使用HTTPS请求,安全性更好。
下面给出一副图示,说明一下HTTP中GET与POST请求的差异:
4、使用步骤:
在Android中使用HTTP请求,主要步骤如下:
(1)、实例化一个HttpGet(或HttpPost)对象,将请求的URL地址通过构造方法传给HttpGet(或HttpPost)对象;
(2)、使用DefaultHttpClient类的execute方法发送GET或POST 请求,并返回HttpResponse对象;
(3)、通过HttpResponse接口的getEntity方法返回响应信息。
5、实例代码
给出一个在实际应用中的一个POST请求的代码片段:
[java] view plain copy print
params = new LinkedList<BasicNameValuePair>();
paramsadd(new BasicNameValuePair("param1", "Post方法"));
paramsadd(new BasicNameValuePair("param2", "第二个参数"));
try {
HttpPost post = new HttpPost(baseUrl);
postsetEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中
HttpResponse response = httpClientexecute(post); //执行POST方法
resCode = responsegetStatusLine()getStatusCode()); //获取响应码
result = EntityUtilstoString(responsegetEntity(), "utf-8")); //获取响应内容
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
6、HTTP请求状态码意义
HTTP请求中,主要有这样几个类型:1XX:表示信息提示,2XX:表示成功,3XX:表示重定向,4XX:表示客户端请求错误,5XX:表示服务器错误。常见的几个HTTP请求状态码意义如下:
200 OK: 找到了该资源,并且一切正常。
304 NOT MODIFIED: 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
401 UNAUTHORIZED: 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
403 FORBIDDEN: 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
404 NOT FOUND: 在指定的位置不存在所申请的资源。
505 NOT SUPPORTED:服务器不支持请求中所指明的HTTP版本
0条评论