目标:通过socket 模拟HTTP协议连接 tomcat,做一次POST请求
请求数据:
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(); } } }
相关推荐
然而,HTTP协议本身并不支持持久连接,而WebSocket则提供了这样的能力,因此"restful-socket-client"应运而生,它旨在提供一种方式,让客户端能够像使用RESTful API一样与WebSocket服务器交互。 在JavaScript中,...
例如,`HttpGet`、`HttpPost`类分别用于GET和POST请求,`CloseableHttpResponse`用于处理响应,而`HttpContext`则用于存储请求上下文信息。 5. **Authentication and Proxy Support**:HttpClient 4.1.1 支持多种...
本文将深入讲解如何使用C++通过socket TCP实现HTTP POST方法提交form_data类型的表单数据,包括图片和mp4视频到HTTP服务器。这个过程涉及到网络通信的基础、HTTP协议的理解以及文件上传的技巧。 首先,我们要了解...
smart-http 是一款可编程的 Http 应用微内核,基于smart-socket实现的轻量级http服务器,方便用户根据自身需求进行 Server 或 Client 的应用开发。支持GET、POST的 HTTP 请求。提供了 URL 路由组件,可以快速搭建...
在实际应用中,服务器和客户端的通信可能涉及到更复杂的数据交换格式,如JSON或XML,以及HTTP协议的请求方法(GET、POST等)和状态码。还有可能需要考虑安全性问题,例如使用SSL/TLS进行加密以保护数据传输的安全。 ...
9. **RESTful API设计**:用于构建可扩展的Web服务,通过HTTP方法(GET、POST、PUT、DELETE等)操作资源,使得客户端和服务器之间的交互更加简单、直观。 10. **Web Socket**:这是一种持久化的双向通信协议,允许...
9. **SSL/TLS加密**:为了保护用户隐私和数据安全,SMTP客户端可能支持SSL(Secure Socket Layer)或TLS(Transport Layer Security)加密,以提供安全的连接。 10. **邮件跟踪**:用户可能希望知道邮件是否成功...
总结来说,PHP中的Socket函数提供了强大的网络通信能力,可以用于模拟HTTP请求(如POST),创建自定义的网络服务,以及进行TCP和UDP通信。这些功能使得开发者能够灵活地处理网络数据传输,尤其是在需要避开标准HTTP...
这里的`.allowedOrigins("*")`表示允许任何来源的请求,`.allowedMethods("*")`允许任何方法(GET、POST、PUT等),`.allowedHeaders("*")`允许任何头信息。这将允许所有跨域请求通过。 最后,在客户端,我们可以...
生成 HTTP GET 和 POST 请求 读取HTTP响应 将 HTTP 响应负载保存到本地文件 ======== 测试网站 数据格式:名称=str str 可以是任何字符串(例如 str=Wei) 通过 HTTP GET 和 POST 将数据传送到此 URL
当浏览器向服务器发送HTTP GET或POST请求时,服务器会解析这些请求,然后通过Socket返回相应的HTML、CSS、JavaScript等资源,使得浏览器能够渲染并显示网页内容。 然而,传统的HTTP协议存在一些限制,例如它不支持...
client_socket, addr = server_socket.accept() print(f"接收到来自{addr}的连接请求") # 接收客户端发送的数据 request_data = client_socket.recv(1024).decode('utf-8') # 分析请求,处理HTTP请求行 ...
利用Express,我们可以快速搭建一个HTTP服务器,并处理各种HTTP请求,如GET、POST等。在这个项目中,Express将作为Socket.IO服务器的基础框架。 接下来,我们关注Socket.IO的核心概念。Socket.IO的目标是提供一种...
在Windows平台上,使用C语言实现HTTP客户端以执行POST和GET请求是常见的编程任务,尤其是在开发系统级工具或网络通信程序时。以下是一个详尽的解释,涵盖了如何在C语言中实现这一功能的关键知识点。 首先,我们需要...
2. **网络编程**:DS-Sim-Client可能会涉及到网络通信,这需要对Socket编程有了解,包括TCP和UDP协议,以及InputStream和OutputStream的使用来发送和接收数据。 3. **多线程**:为了提高性能,客户端可能采用多线程...
此包中的主要类包括`CloseableHttpClient`(负责创建和管理HTTP客户端实例)、`HttpGet`、`HttpPost`(用于构造不同类型的HTTP请求)和`CloseableHttpResponse`(用于接收和处理HTTP响应)。 `httpcomponents-core-...
client_socket, client_address = server_socket.accept() # 接收请求 request = client_socket.recv(1024).decode('utf-8') # 解析请求,假设是GET请求 if 'GET' in request: # 假设请求的是/index.html ...