JAVA中的Http Post

JAVA中的Http Post,java,http,post,get,Java,Http,Post,Get,我以前没有使用过HTTP post/get,我办公室即将推出的项目是基于java中的HTTP post/get。它基本上是基于客户机-服务器的应用程序。客户将发布一些信息,我需要获得这些信息,并处理字符串和反之亦然。这个项目必须在J2SE上开发。您可以假设这是JMS队列消息处理之类的东西。我在谷歌上搜索了这些信息,但大部分信息都是针对web应用程序的,我的应该像消息队列一样工作。有人能告诉我怎么做,或者告诉我在哪里可以得到一些有用的信息吗 谢谢 Arun我建议您从学习HTTP协议的基础知识开始。

我以前没有使用过HTTP post/get,我办公室即将推出的项目是基于java中的HTTP post/get。它基本上是基于客户机-服务器的应用程序。客户将发布一些信息,我需要获得这些信息,并处理字符串和反之亦然。这个项目必须在J2SE上开发。您可以假设这是JMS队列消息处理之类的东西。我在谷歌上搜索了这些信息,但大部分信息都是针对web应用程序的,我的应该像消息队列一样工作。有人能告诉我怎么做,或者告诉我在哪里可以得到一些有用的信息吗

谢谢
Arun

我建议您从学习HTTP协议的基础知识开始。这是一个很好的开端。在了解了基础知识之后,请遵循关于如何通过编程方式与HTTP服务器通信(读/写)的说明。在那之后,Google就是你的朋友。

如果你不局限于J2SE,你可以使用它来管理HTTP的POST/GET方法。如果可能的话,请进行评估,否则您将重新发明轮子。

是一种流行的web服务器,旨在轻松嵌入到应用程序中

它可以在应用程序内部运行,并通过发送到自定义代码来响应请求

Jetty还具有一个可用于客户端发送请求的功能


这是一个相当大的主题,我无法发布一个完整的指南,但通常质量非常高,应该是一个很好的起点。

如果不需要特别使用严格的HTTP,只需要使用JavaSE(而不是JavaEE,它排除了servlet、JSP、JMS等),然后您可能需要调查
ServerSocket
Socket

服务器

您的服务器将需要侦听TCP端口(例如,端口8080)-通常您会选择介于1025和65535之间的端口号,但是如果您试图使用已定义的具有默认端口的服务,请使用该端口号。但是请注意,在unix上,为了监听1024以下的任何端口,我相信您需要是root用户。传统上,端口80用于HTTP

要在此端口上侦听,您的代码中需要类似以下内容:

ServerSocket srvSocket = new ServerSocket(8080);
Socket socket = srvSocket.accept();
这几乎是最基本的代码,它会导致应用程序等待某个连接到端口8080的东西。连接后,通过查询返回的
套接字
对象,允许您从客户端读取内容,并将这些请求插入队列,您可以为连接的客户端获取
输入流
输出流
。然后,该队列可以由其他线程处理

客户端

为了让客户端连接到服务器,您需要使用基于以下示例的内容:

Socket connection = new Socket("server.domain.com", 8080);
OutputStream output = connection.getOutputStream();
然后将请求写入服务器的
OutputStream
(如果需要响应,则从
getInputStream()
返回的
InputStream
读取请求)

提供的代码非常基本,但它应该让您大致了解如何继续。如果您想使用真正的HTTP,甚至可以使用此方法,但是如果是这样的话,最好使用一些预制库(尽管您可能不需要HTTP规范本身中定义的所有功能)


无论如何,我希望这能为您提供一个良好的起点。我也有一个以SE为主的背景。在客户端,编写get/post非常简单。或者你可以用谷歌搜索源代码。我发现使用REST是简单易懂的。在服务器端,有很多选择,我的经验非常有限。我使用标准的JEE6编写了服务器,这并不太痛苦,但听起来这不是您的选择。

您真的需要使用HTTP,还是您自己的自定义协议就可以了?(即,您是否同时控制客户端和服务器?)。不要担心J2SE与其他东西之间的区别。Jetty将在J2SE JVM中正常运行。如果您不想向客户机部署额外的库(例如使用Jetty http客户机),您可以只使用Java标准库执行http post。这里的例子:谢谢你的信息。。我会调查的!!套接字对于简单的东西很好,但是如果您需要队列行为来处理所有消息,那么您需要非常小心。但是,使用套接字、队列等正是编写MUD的方式(这是我的大多数ServerSocket经验的来源)。只要您将来自套接字的请求包装到某种对象中(例如,HttpServletRequest,它在JEE中对OP不可用),那么对这些对象进行排队应该相当简单。与大多数事情一样,这将取决于相关开发人员的技能和经验。我们只能回答被问到的问题。我也用过很多插座——它们在大多数情况下都工作得很好。好帖子。我现在给你一票,一个小小的修正。在我的上一封邮件中,HTTP已修改为HTTPS。因此,我们也必须结合ssl安全性。好吧,在这种情况下,我建议您遵循Martin的建议,将Jetty嵌入到您的应用程序中——这是一段很棒的代码,使用起来绝对轻松!