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]
分享到:
相关推荐
压缩包中的`TestURLReceive`可能是一个测试类或者包含测试功能的文件,可能包含对上述GET和POST请求的实现,以及可能的异常处理和结果验证逻辑。通过分析这个文件,你可以进一步了解实际项目中如何组织和使用这些...
POST请求的报文需要包含请求行、请求头和请求体: ``` POST /path HTTP/1.1 Host: www.example.com Content-Type: application/x-www-form-urlencoded Content-Length: length data ``` 其中`data`是POST的数据...
但没办法改他的现有系统,只好写个模拟的浏览器,打算做成自动登录并自动去取信息,发布的这个还没有做信息的分析功能,不过感觉里面的HTTP协议请求和Cookie、Session的一些处理对朋友们还是有帮助的。另外,有一个...
POST请求则常用于向服务器提交数据,例如在网页表单提交时。在测试工具中,我们可以指定请求URL,填写POST数据,可以是JSON、XML或其他格式,然后发送请求并分析服务器的响应,确保数据被正确接收和处理。 PUT请求...
3. POST请求的大小受到服务器限制,通常比GET请求能携带更多的数据。 4. 对于POST请求,服务器可能会返回一个新的资源的URI(统一资源标识符)。 GET请求: 1. GET请求用于从服务器获取数据,它通过URL来传递参数,...
通过以上分析,我们不仅了解了HTTP协议的基本结构和工作原理,还深入探讨了各种请求方法的特点及适用场景,以及GET与POST请求的关键差异。此外,还介绍了常见的HTTP状态码,这对于理解服务器与客户端之间的交互至关...
首先,GET请求是HTTP协议中最常见的一种方法,通常用于从服务器获取数据。在J2ME中,我们可以使用`javax.microedition.io.Connector`类和`HttpConnection`接口来实现GET请求。创建一个`HttpConnection`对象,设置其...
2. **POST请求头部信息分析** - 在Firebug中可以看到POST请求的头部信息。其中,`Content-Length`字段表示请求体中包含的数据长度。例如,在这个实验中,`Content-Length`的值为19。这表示请求体中包含了19个字节...
本篇将详细探讨HTTP请求,特别是GET和POST请求,以及如何通过源码工具进行操作。 一、HTTP请求基础 HTTP请求是由客户端(如浏览器)发起,向服务器请求资源的动作。它由请求行、请求头、空行和请求体四部分组成。...
在IT行业中,模拟登录是一项常见的任务,特别是在自动化测试、数据抓取或数据分析等领域。Java作为一门广泛使用的编程语言,提供了多种方法来实现这个功能。本篇文章将深入探讨如何使用Java模拟GET/POST登录,特别是...
通过以上分析,"TestHttpPost"项目旨在提供一个测试平台,用于验证Web API接口对GET和POST请求的响应,确保其功能完整性和正确性。开发过程中可能运用了.NET测试框架,结合自定义的图形界面,使得测试过程更加直观和...
你可以通过阅读和分析这两个文件,了解在实际项目中如何具体实现MFC的HttpClient GET和POST请求。 总结来说,MFC的HttpClient使得开发者能够方便地与HTTP服务器交互,执行GET和POST请求。通过理解HTTP协议的基本...
这两种方法是HTTP协议中最基本的操作,GET用于获取资源,而POST用于提交数据。 在Python中,有几个模块可以用来执行这些操作,如`urllib`, `urllib2`, `httplib`以及更新后的`http.client`模块(在Python 3中)。...
玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。 我这里有两种实现: 1:libcurl实现的CHttpClient类,该类实现了Htpp和Https的get post方法。 2:...
通过阅读《HTTP_POST_GET.doc》文档,你可以获得更深入的理论知识和实践案例,帮助你在HTTP协议分析和编程中更加得心应手。这份文档应该包含了GET和POST请求的详细解析,以及它们在不同场景下的应用示例,对于提升你...
HttpGet和HttpPost是HTTP协议中的两种主要请求方法。HttpGet是一种无状态、幂等的请求方法,通常用于获取资源,它的请求参数包含在URL中。HttpPost则可以携带大量数据,包括在请求体中,适合上传文件或发送复杂的...
玩过抓包,网络协议分析的朋友肯定都知道http https post get,web端和用户的交互主要是通过post get完成的。 我这里有两种实现: 1:libcurl实现的CHttpClient类,该类实现了Htpp和Https的get post方法。 2:...
通过以上分析,我们可以看到发送HTTPS POST请求的过程涉及到多个关键步骤,包括设置信任管理器、创建SSL上下文、注册SSL Socket工厂、设置超时时间、构建POST请求以及处理响应内容等。这些步骤对于实现安全且高效的...
总之,理解HTTP协议的GET和POST方法,掌握使用HttpWatch等工具进行网络请求分析,对于提升Web应用的性能和用户体验至关重要。通过实践和学习,开发者能更好地应对各种网络问题,为用户提供更优质的在线服务。
在本文中,我们将探讨如何通过C++语言实现HTTP协议中的GET和POST方法,以及对相关源码的分析。 1. **HTTP基础** - HTTP协议基于TCP/IP通信,是无状态的,这意味着每个请求都是独立的,服务器不会记住之前的交互。 ...