`

socket-client-http-post

阅读更多

目标:通过socket 模拟HTTP协议连接 tomcat,做一次POST请求

 

http://dl2.iteye.com/upload/attachment/0124/5410/145b9806-1e1d-3805-a11a-fc622c95e484.jpg 

 

请求数据:

POST /index.jsp HTTP/1.1
Host:192.168.237.230
Content-Type:application/x-www-form-urlencoded
Connection: close
Content-Length:42

username=xinchun.wang&password=123456.....

 

响应数据:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=613C816BEC2DB87DB7A043574B68AA57; Path=/
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 293
Date: Tue, 25 Apr 2017 02:58:49 GMT
Connection: close


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
 xinchun.wang
  123456.....
</body>
</html>

 

    代码参考:

public class ClientPost {

	public static void main(String[] args) {
		sendRequest(8078);
	}

	public static void sendRequest(int port) {
		try {
			Socket socket = new Socket("192.168.237.230", port);

			OutputStream out = socket.getOutputStream();

			// 由Socket对象得到输入流,并构造相应的BufferedReader对象
			BufferedReader in = new BufferedReader(new InputStreamReader(
					socket.getInputStream()));

			String body = "username=xinchun.wang&password=123456.....";
			
			StringBuilder sb = new StringBuilder();
			sb.append("POST /index.jsp HTTP/1.1\r\n");
			sb.append("Host:192.168.237.230\r\n");
			sb.append("Content-Type:application/x-www-form-urlencoded\r\n");
			sb.append("Connection: close\r\n");
			sb.append("Content-Length:"+body.length()+"\r\n");
			sb.append("\r\n");

			sb.append(body);
			out.write(sb.toString().getBytes());

			out.flush();
			String line = in.readLine();
			while (line != null && line.toString() != "") {
				System.out.println(line);
				line = in.readLine();
			}

			out.close(); // 关闭Socket输出流
			in.close(); // 关闭Socket输入流
			socket.close(); // 关闭Socket

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

0
2
分享到:
评论

相关推荐

    restful-socket-client:用于配合restful-socket的Node.js服务端使用WebSocket模仿请求响应模式

    然而,HTTP协议本身并不支持持久连接,而WebSocket则提供了这样的能力,因此"restful-socket-client"应运而生,它旨在提供一种方式,让客户端能够像使用RESTful API一样与WebSocket服务器交互。 在JavaScript中,...

    httpcomponents-client-4.1.1源码

    例如,`HttpGet`、`HttpPost`类分别用于GET和POST请求,`CloseableHttpResponse`用于处理响应,而`HttpContext`则用于存储请求上下文信息。 5. **Authentication and Proxy Support**:HttpClient 4.1.1 支持多种...

    【最新】C++ 通过socket tcp实现http post form_data表单提交图片, mp4到http服务器

    本文将深入讲解如何使用C++通过socket TCP实现HTTP POST方法提交form_data类型的表单数据,包括图片和mp4视频到HTTP服务器。这个过程涉及到网络通信的基础、HTTP协议的理解以及文件上传的技巧。 首先,我们要了解...

    smart-http 是一款可编程的 Http 应用微内核,基于smart-socket实现的轻量级http服务器

    smart-http 是一款可编程的 Http 应用微内核,基于smart-socket实现的轻量级http服务器,方便用户根据自身需求进行 Server 或 Client 的应用开发。支持GET、POST的 HTTP 请求。提供了 URL 路由组件,可以快速搭建...

    server-client-src_网络通讯_

    在实际应用中,服务器和客户端的通信可能涉及到更复杂的数据交换格式,如JSON或XML,以及HTTP协议的请求方法(GET、POST等)和状态码。还有可能需要考虑安全性问题,例如使用SSL/TLS进行加密以保护数据传输的安全。 ...

    Client-and-server-communication.rar_Server-Client

    9. **RESTful API设计**:用于构建可扩展的Web服务,通过HTTP方法(GET、POST、PUT、DELETE等)操作资源,使得客户端和服务器之间的交互更加简单、直观。 10. **Web Socket**:这是一种持久化的双向通信协议,允许...

    SMTP-Client.rar_smtp

    9. **SSL/TLS加密**:为了保护用户隐私和数据安全,SMTP客户端可能支持SSL(Secure Socket Layer)或TLS(Transport Layer Security)加密,以提供安全的连接。 10. **邮件跟踪**:用户可能希望知道邮件是否成功...

    php-socket拟POST.doc

    总结来说,PHP中的Socket函数提供了强大的网络通信能力,可以用于模拟HTTP请求(如POST),创建自定义的网络服务,以及进行TCP和UDP通信。这些功能使得开发者能够灵活地处理网络数据传输,尤其是在需要避开标准HTTP...

    sockJs实现的websocket跨域

    这里的`.allowedOrigins("*")`表示允许任何来源的请求,`.allowedMethods("*")`允许任何方法(GET、POST、PUT等),`.allowedHeaders("*")`允许任何头信息。这将允许所有跨域请求通过。 最后,在客户端,我们可以...

    http-client-socket-java:科大COMP4621计算机通讯网络I(2014Spring)项目

    生成 HTTP GET 和 POST 请求 读取HTTP响应 将 HTTP 响应负载保存到本地文件 ======== 测试网站 数据格式:名称=str str 可以是任何字符串(例如 str=Wei) 通过 HTTP GET 和 POST 将数据传送到此 URL

    socket服务器,client 浏览器访问

    当浏览器向服务器发送HTTP GET或POST请求时,服务器会解析这些请求,然后通过Socket返回相应的HTML、CSS、JavaScript等资源,使得浏览器能够渲染并显示网页内容。 然而,传统的HTTP协议存在一些限制,例如它不支持...

    Python学习笔记-基于socket基础的http服务端程序

    client_socket, addr = server_socket.accept() print(f"接收到来自{addr}的连接请求") # 接收客户端发送的数据 request_data = client_socket.recv(1024).decode('utf-8') # 分析请求,处理HTTP请求行 ...

    flutter-socket-io-server:ServidorBásicode sockets con express

    利用Express,我们可以快速搭建一个HTTP服务器,并处理各种HTTP请求,如GET、POST等。在这个项目中,Express将作为Socket.IO服务器的基础框架。 接下来,我们关注Socket.IO的核心概念。Socket.IO的目标是提供一种...

    windows平台简单的http_client实现POST-GET方法C语言实现

    在Windows平台上,使用C语言实现HTTP客户端以执行POST和GET请求是常见的编程任务,尤其是在开发系统级工具或网络通信程序时。以下是一个详尽的解释,涵盖了如何在C语言中实现这一功能的关键知识点。 首先,我们需要...

    DS-Sim-Client

    2. **网络编程**:DS-Sim-Client可能会涉及到网络通信,这需要对Socket编程有了解,包括TCP和UDP协议,以及InputStream和OutputStream的使用来发送和接收数据。 3. **多线程**:为了提高性能,客户端可能采用多线程...

    org.apache.HTTP需要的jar包

    此包中的主要类包括`CloseableHttpClient`(负责创建和管理HTTP客户端实例)、`HttpGet`、`HttpPost`(用于构造不同类型的HTTP请求)和`CloseableHttpResponse`(用于接收和处理HTTP响应)。 `httpcomponents-core-...

    模拟http服务器(socket使用)

    client_socket, client_address = server_socket.accept() # 接收请求 request = client_socket.recv(1024).decode('utf-8') # 解析请求,假设是GET请求 if 'GET' in request: # 假设请求的是/index.html ...

Global site tag (gtag.js) - Google Analytics