首先,您无法使用Java序列化序列化HttpServletRequest或HttpServletResponse。符合这些API的对象通常在servlet实现堆栈中包括固有地不可序列化的对“
stuff”的引用。
其次,您不能将请求“重定向”到另一个客户端。从HTTP协议的角度来看,这没有任何意义。
当客户端向服务器发送请求并且服务器响应具有3xx状态代码,表明“在其他地方尝试该请求”时,将发生重定向。它是重定向到其他 服务器 ,而不是其他客户端。
甚至忽略了重定向意味着什么细节。您无法将HTTP请求发送到具有HTTP客户端角色的对象。它不会期望它(监听它),也不知道如何处理它。(实际上这将违反HTTP协议。)
第三,“普通套接字客户端”无法与HTTP服务(使用Servlet或其他任何方式实现)进行通信。客户端必须至少实现HTTP协议的子集,以使其自己能够被HTTP服务理解。可以“手工”实现,但是IMO并不是一个好主意…当有高质量的实现可以免费使用时。
简而言之,您似乎想做的是不可能的/荒谬的。(如果我正确理解了您的问题……这值得商.。)
如果您在这里解释了您实际上想做的事情,我们也许可以建议明智的替代方法。
我正在尝试跨服务器连接两个Java客户端应用程序。客户端将能够直接与其他客户端通信。
从字面上看,您无法使用HTTP做到这一点。但是您 可以 构建一个HTTP服务器/ servlet,将消息从一个客户端传输到另一个客户端。例如
- 客户端A向服务器发送包含A消息的PUT请求。
- 服务器存储消息并答复客户端A。
- 客户端B发送GET请求,询问“是否有任何消息?” 到服务器。
- 服务器查找消息,并使用来自A的消息进行响应。
但是请注意,使用普通套接字客户端 无法 做到这一点。客户端必须是HTTP客户端。
如果您准备放弃服务器是HTTP服务器/
servlet的要求,则可以让“简单套接字”客户端打开与服务器的双工连接,并使服务器在客户端之间传递“消息”。这需要实现用于消息传递的自定义“协议”。
第三种选择是使用现有的RPC或对象代理技术。例如RMI,CORBA,ICE等



