`
shidan66
  • 浏览: 65538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTTP get post

    博客分类:
  • HTTP
 
阅读更多

HTTP协议中最常用的两个请求方法get、post

 

HTTP请求格式

 

<request-line>

<headers>

<blank-line>

[<request-body>]

 

<request-line> 的格式为 METHOD REQUEST-URI VERSION  回车换行符

headers 可以有多行,每行的格式为name:value1[,value2,...value n]后跟回车换行符

<blank-line>的作用是标示headers结束,此行只能有一个回车换行符

<request-body>在POST请求的时候会有数据,GET方法request-body为空

 

 

HTTP响应格式

<status-line>

<headers>

<blank-line>

<response-body>

<status-line>  格式为 VERSION STATUS-CODE STATUS-TEXT

 

GET和POST请求的区别

①按照HTTP协议规范,get用来获取信息,post则用来修改信息,所以按照规范,get请求应该是不会对服务器上的数据产生影响,但是实际使用中,可能并不是那么严格的遵守此规范。

②get请求和post请求的长度问题,按照HTTP协议,get和post长度并没有限制,我们常说的get适合传送销量信息,主要是因为get请求将queryString追加在url中,然而不同的浏览器对url的长度限制不一,导致了get请求的信息量较小,其实服务器也会对url长度作限制,如果长度过长会报414错误

③queryString位置不同,get请求queryString是在request-line中,post则是在request-body中

④安全性,get请求中的参数会在url中明文显示,而URL会被浏览器缓存,而POST方式的请求,queryString是在request-body中

⑤编码问题

        get请求中提交的数据默认是不能指定urlencode的编码格式,一般按照浏览器设置,中文的浏览器上一般都是GBK或UTF-8,由于URL拼接完成后,浏览器会对URL进行encode,将不符合浏览器规范的字符按照指定的编码方式编码成二进制字节码,按照%xy的形式拼接在url中,比如刚看到的某文章中的“严”字,UTF-8的编码为E4B8A4,那么按照UTF-8编码encode之后就变成了%E4%B8%A5,这样就符合URL的规范啦。由于不同浏览器的设置不同,为了方便后台解码,可以使用javascript中的encodeURI、encodeURIComponent方法进行encode,这两个方法使用的编码方式为UTF-8。服务器接收到请求的URL后,按照自身设定的编码方式进行URL encode,像tomcat默认的是ISO-8859-1,所以,get请求中含有中文的话,很可能会出错,我们需要修改配置文件(当然也可以在doGet方法里面自己转码),来指定tomcat的decode编码格式

 <Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>  

需要注意的是,request.setCharacterEncoding方法,并不能对get请求起作用,Servlet的文档中也说啦,该方法进队request body中的encoding有效,而get方法是没有请求体的。

 

 

        对于post请求来说,则显得灵活很多,因为只要页面中有下面这段内容,那么form中的数据就会按照指定的编码进行encode啦,另外这段内容还可以控制浏览器显示页面时候使用的编码方式。

<meta http-equiv="Content-Type" content="text/html; charset=字符集(GBK,utf-8等)"/>

 服务器端接收到之后会使用默认的编码进行decode,但是这个时候就可以使用request.setCharacterEncoding("字符集")进行设定啦。另外需要注意的是,post传递参数可以在uri中,也可以在request-body中,所以,对于uri中的中文等特殊字符,还是需要像get请求那样去处理的。

 

 

分享到:
评论

相关推荐

    VC++ HTTP Get Post请求

    在VC++编程环境中,HTTP(超文本传输协议)Get和Post请求是常见的网络通信方法,主要用于从或向Web服务器发送数据。MFC(Microsoft Foundation Classes)库为VC++提供了便捷的方式来实现这些功能。本文将详细讲解...

    c++ boost asio http get post请求

    在本例中,我们将探讨如何使用Boost.Asio实现HTTP GET和POST请求。 首先,让我们理解GET和POST请求的基本概念。GET是HTTP协议中最常见的请求方法,用于从服务器获取资源。而POST请求通常用于向服务器发送数据,如...

    http get post 请求模拟器

    HTTP是互联网上应用最为广泛的一种网络协议,GET和POST是HTTP协议中的两种主要请求方法,它们在Web开发中扮演着重要角色。理解这两者的工作原理和区别对于进行网络编程至关重要。 1. GET请求: GET请求是HTTP中最...

    QT实现http GET POST操作

    QT实现的http GET POST操作 #include #include #include #include #include &lt;QtNetwork/QHttpRequestHeader&gt;

    http get post 请求接口工具类

    综上所述,"http get post 请求接口工具类"涉及到的核心概念包括HTTP请求方式的运用,接口调用的封装,以及数据安全的保障措施,如参数加密、RSA签名来确保数据安全,以及字符集转换和Base64编码来处理文本和二进制...

    shttp.rar_POST_SHTTP协议_linux http get post_linux http协议_shttp

    "POST_SHTTP协议"指的是这个程序支持使用POST方法来向服务器发送数据,而"linux http get post"表明这个程序在Linux环境下实现了HTTP的GET和POST请求。"linux_http协议"进一步强调了这个实现是在遵循标准HTTP协议的...

    WCF Web HTTP get post wcf reset ful

    标题 "WCF Web HTTP get post wcf reset ful" 暗示了我们正在讨论Windows Communication Foundation(WCF)服务中的Web HTTP绑定,以及与GET、POST请求相关的方法,可能还包括服务重置和完整配置(ful)的话题。...

    http get post实现-转

    本项目“http get post实现-转”是用C语言实现的一个轻量级的HTTP服务器,名为Tinyhttpd,它支持GET和POST两种请求方法。下面我们将详细讨论这两个请求方法以及C语言实现HTTP服务器的关键点。 1. GET与POST请求方法...

    HTTP Get POST 分析工具(c# 源代码)

    在本资源中,我们主要关注HTTP的两种主要请求方法:GET和POST,以及如何使用C#语言来实现这些功能。这份源代码提供了对HTTP协议进行分析的工具,对于学习和开发C#类爬虫程序的初学者来说非常有帮助。 GET方法是HTTP...

    C# http Get/POST请求封装类

    GET和POST是HTTP协议中最常见的两种请求方法,分别用于获取资源和提交数据。本文将详细讨论如何在C#中封装一个用于执行HTTP GET和POST请求的类,以及`HttpHelper.cs`文件中的关键实现。 首先,了解GET和POST的基本...

    php http get post实现

    该类封装了http常用的get post等方法,使用非常简单。

    DelphiXE10.3封装http-get-post成dll及调用

    例如,可以创建一个名为`THttpFunctions`的接口,并声明两个函数:`function HttpGet(const URL: string): string; stdcall;` 和 `function HttpPost(const URL, Data: string): string; stdcall;`。 - 在DLL项目的...

    HTTP_POST_GET.rar_Http get post_http get_http post_http post ge

    本文将深入探讨HTTP协议中的两种主要请求方法:GET和POST,以及它们在实际应用中的区别。 首先,GET请求是最常见的HTTP方法,用于从服务器获取资源。当用户在浏览器地址栏输入URL并按回车时,浏览器就会发送一个GET...

    C++ 实现 HTTP HTTPS POST GET(包含curl版本和winhttp两种实现)

    C++ 实现 HTTP HTTPS POST GET(包含curl版本和winhttp两种实现)。 玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。 我这里有两种实现: 1:libcurl实现的...

    http get post 实现

    本文将深入探讨GET和POST两种主要的HTTP请求方法,以及如何在Go语言中实现它们。 GET和POST是HTTP协议中最常见的请求方法。GET主要用于获取资源,其请求参数通常包含在URL中,具有可缓存、可被搜索引擎抓取等特性,...

    有关HTTP get post

    本篇文章将详细讲解HTTP中的GET和POST方法,并着重阐述它们在Android应用程序中向服务器发送数据的应用。 首先,GET和POST是HTTP协议中两种主要的请求方法,它们用于从服务器获取资源或向服务器提交数据。 1. GET...

    c语言实现http get post 请求 适用于arm x86 嵌入式系统

    用的库比较通用,各个平台和各个版本的gcc应该都可以用 ## 目前测试过可用平台 &gt; x86_64 debian11 &gt; arm(s3c2440) linux2.26 ## 目前测试过可用编译器 &gt; gcc10(x86) &gt; gcc4(x86) ...&gt; gcc3(arm)

    TestPost.zip_HTTP Get Post_POST GET_c++ httpclient_http请求_请求http

    mfc http post 和get 请求

Global site tag (gtag.js) - Google Analytics