`
johnson.lee
  • 浏览: 52583 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

剖析HTTP协议GET/POST请求

阅读更多
WEB服务器Socket实现
public static void main(String[] args) {

	ServerSocket socket = null;
	try {
		socket = new ServerSocket(80);
	} catch (IOException e) {
		e.printStackTrace();
		System.exit(0);
	}
	while (true) {
		InputStream is = null;
		Socket s = null;
		try {
			s = socket.accept();
			is = s.getInputStream();
			int c = -1;
			while ((c = is.read()) != -1) {
				System.out.print((char) c);
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (is != null) {
					is.close();
					is = null;
				}
				if (s != null) {
					s.close();
					s = null;
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}


[list]
  • GET方式提交
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    		<title> New Document </title>
    	</head>
    
    	<body>
    		<form method="get" action="http://localhost/web/index.jsp">
    			<input type="text" name="name" value="me"/>
    			<input type="password" name="password" value="mypwd"/>
    			<input type="submit" name="submit" value="submit"/>
    		</form>
    	</body>
    </html>
    

    请求信息如下:
    GET /web/index.jsp?name=me&password=mypwd&submit=submit HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MS-RTC LM 8; InfoPath.1; .NET CLR 2.0.50727; CIBA)
    Host: localhost
    Connection: Keep-Alive
    
    
  • POST方式提交
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    		<title> New Document </title>
    	</head>
    
    	<body>
    		<form method="post" action="http://localhost/web/index.jsp">
    			<input type="text" name="name" value="me"/>
    			<input type="password" name="password" value="mypwd"/>
    			<input type="submit" name="submit" value="submit"/>
    		</form>
    	</body>
    </html>
    

    请求信息如下:
    POST /web/index.jsp HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MS-RTC LM 8; InfoPath.1; .NET CLR 2.0.50727; CIBA)
    Host: localhost
    Content-Length: 36
    Connection: Keep-Alive
    Cache-Control: no-cache
    
    name=me&password=mypwd&submit=submit
    
    
  • POST上传文件
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    		<title> New Document </title>
    	</head>
    
    	<body>
    		<form method="post" action="http://localhost/web/index.jsp" enctype="multipart/form-data">
    			<input type="text" name="name" value="me"/>
    			<input type="password" name="password" value="mypwd"/>
    			<input type="file" name="uploadfile"/>
    			<input type="submit" name="submit" value="submit"/>
    		</form>
    	</body>
    </html>
    

    请求信息如下:
    POST /web/index.jsp HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    Content-Type: multipart/form-data; boundary=---------------------------7dad71450b9e
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MS-RTC LM 8; InfoPath.1; .NET CLR 2.0.50727; CIBA)
    Host: localhost
    Content-Length: 954
    Connection: Keep-Alive
    Cache-Control: no-cache
    
    -----------------------------7dad71450b9e
    Content-Disposition: form-data; name="name"
    
    me
    -----------------------------7dad71450b9e
    Content-Disposition: form-data; name="password"
    
    mypwd
    -----------------------------7dad71450b9e
    Content-Disposition: form-data; name="uploadfile"; filename="D:\temp\zhizhu\news.sql"
    Content-Type: application/octet-stream
    
    CREATE DATABASE IF NOT EXISTS sohunews;
    USE sohunews;
    
    --
    -- Definition of table `news`
    --
    
    DROP TABLE IF EXISTS `news`;
    CREATE TABLE `news` (
      `newsid` int(11) NOT NULL auto_increment,
      `newstitle` varchar(60) NOT NULL,
      `newsauthor` varchar(20) NOT NULL,
      `newscontent` text NOT NULL,
      `newsurl` char(130) NOT NULL,
      `newsdate` varchar(24) NOT NULL,
      PRIMARY KEY  (`newsid`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    -----------------------------7dad71450b9e
    Content-Disposition: form-data; name="submit"
    
    submit
    -----------------------------7dad71450b9e--
    
    

    [/list]
    1
    0
    分享到:
    评论

    相关推荐

      Java发送HTTP请求GET/POST测试

      压缩包中的`TestURLReceive`可能是一个测试类或者包含测试功能的文件,可能包含对上述GET和POST请求的实现,以及可能的异常处理和结果验证逻辑。通过分析这个文件,你可以进一步了解实际项目中如何组织和使用这些...

      模拟GET/POST方法发送HTTP请求

      POST请求的报文需要包含请求行、请求头和请求体: ``` POST /path HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: length data ``` 其中`data`是POST的数据...

      用于模拟GET/POST方法发送HTTP请求并取得数据

      但没办法改他的现有系统,只好写个模拟的浏览器,打算做成自动登录并自动去取信息,发布的这个还没有做信息的分析功能,不过感觉里面的HTTP协议请求和Cookie、Session的一些处理对朋友们还是有帮助的。另外,有一个...

      Http/Https请求测试工具

      POST请求则常用于向服务器提交数据,例如在网页表单提交时。在测试工具中,我们可以指定请求URL,填写POST数据,可以是JSON、XML或其他格式,然后发送请求并分析服务器的响应,确保数据被正确接收和处理。 PUT请求...

      POST/GET请求测试工具源码

      3. POST请求的大小受到服务器限制,通常比GET请求能携带更多的数据。 4. 对于POST请求,服务器可能会返回一个新的资源的URI(统一资源标识符)。 GET请求: 1. GET请求用于从服务器获取数据,它通过URL来传递参数,...

      Http协议内容总结 http协议包含哪些内容 Http协议的请求方法 Http协议实现的原理机制 get与post请求的区别

      通过以上分析,我们不仅了解了HTTP协议的基本结构和工作原理,还深入探讨了各种请求方法的特点及适用场景,以及GET与POST请求的关键差异。此外,还介绍了常见的HTTP状态码,这对于理解服务器与客户端之间的交互至关...

      j2me Http Get和Post请求总结

      首先,GET请求是HTTP协议中最常见的一种方法,通常用于从服务器获取数据。在J2ME中,我们可以使用`javax.microedition.io.Connector`类和`HttpConnection`接口来实现GET请求。创建一个`HttpConnection`对象,设置其...

      Web应用安全:HTTP协议GET和POST的使用区别实验.docx

      2. **POST请求头部信息分析** - 在Firebug中可以看到POST请求的头部信息。其中,`Content-Length`字段表示请求体中包含的数据长度。例如,在这个实验中,`Content-Length`的值为19。这表示请求体中包含了19个字节...

      http请求,http get请求,http post请求

      本篇将详细探讨HTTP请求,特别是GET和POST请求,以及如何通过源码工具进行操作。 一、HTTP请求基础 HTTP请求是由客户端(如浏览器)发起,向服务器请求资源的动作。它由请求行、请求头、空行和请求体四部分组成。...

      Java模拟get/post登陆(含验证码)

      在IT行业中,模拟登录是一项常见的任务,特别是在自动化测试、数据抓取或数据分析等领域。Java作为一门广泛使用的编程语言,提供了多种方法来实现这个功能。本篇文章将深入探讨如何使用Java模拟GET/POST登录,特别是...

      TestHttpPost(http get和post请求测试)

      通过以上分析,"TestHttpPost"项目旨在提供一个测试平台,用于验证Web API接口对GET和POST请求的响应,确保其功能完整性和正确性。开发过程中可能运用了.NET测试框架,结合自定义的图形界面,使得测试过程更加直观和...

      MFC的HttpClient的Get和Post方法

      你可以通过阅读和分析这两个文件,了解在实际项目中如何具体实现MFC的HttpClient GET和POST请求。 总结来说,MFC的HttpClient使得开发者能够方便地与HTTP服务器交互,执行GET和POST请求。通过理解HTTP协议的基本...

      python做get和post请求

      这两种方法是HTTP协议中最基本的操作,GET用于获取资源,而POST用于提交数据。 在Python中,有几个模块可以用来执行这些操作,如`urllib`, `urllib2`, `httplib`以及更新后的`http.client`模块(在Python 3中)。...

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

      玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。 我这里有两种实现: 1:libcurl实现的CHttpClient类,该类实现了Htpp和Https的get post方法。 2:...

      HTTP_POST_GET.rar_Http get post_http get_http post_http post ge

      通过阅读《HTTP_POST_GET.doc》文档,你可以获得更深入的理论知识和实践案例,帮助你在HTTP协议分析和编程中更加得心应手。这份文档应该包含了GET和POST请求的详细解析,以及它们在不同场景下的应用示例,对于提升你...

      VC通过HttpGet和HttpPost方式与WebService通信,解析返回的Json

      HttpGet和HttpPost是HTTP协议中的两种主要请求方法。HttpGet是一种无状态、幂等的请求方法,通常用于获取资源,它的请求参数包含在URL中。HttpPost则可以携带大量数据,包括在请求体中,适合上传文件或发送复杂的...

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

      玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。 我这里有两种实现: 1:libcurl实现的CHttpClient类,该类实现了Htpp和Https的get post方法。 2:...

      https发送post请求

      通过以上分析,我们可以看到发送HTTPS POST请求的过程涉及到多个关键步骤,包括设置信任管理器、创建SSL上下文、注册SSL Socket工厂、设置超时时间、构建POST请求以及处理响应内容等。这些步骤对于实现安全且高效的...

      IE插件直接观察http协议执行细节捕获POST和GET方法.rar

      总之,理解HTTP协议的GET和POST方法,掌握使用HttpWatch等工具进行网络请求分析,对于提升Web应用的性能和用户体验至关重要。通过实践和学习,开发者能更好地应对各种网络问题,为用户提供更优质的在线服务。

      http.zip_c++ post_http get_http post get_post http

      在本文中,我们将探讨如何通过C++语言实现HTTP协议中的GET和POST方法,以及对相关源码的分析。 1. **HTTP基础** - HTTP协议基于TCP/IP通信,是无状态的,这意味着每个请求都是独立的,服务器不会记住之前的交互。 ...

    Global site tag (gtag.js) - Google Analytics