Java:从HTTP服务器上的套接字读取POST数据

问题描述:

我有一个网站(python/django)需要使用可能或可能不在同一台服务器上的Java资源负载。因此,我正在用Java编写一个迷你网络服务器,它将接收到一个请求,然后在处理完成后,将一些数据发回网站上的网址。Java:从HTTP服务器上的套接字读取POST数据

我已经得到了java代码在套接字上接收连接并用一些简单的HTML进行响应。

我的问题是我将POST数据发送到Java服务器,并且该代码需要对数据执行操作。如果甚至有可能,我该如何去阅读HTML请求中发布的数据。如果没有,是否有其他方式可以做到这一点。

如果您认为我完全以错误的方式讨论这个问题,那么请告诉我,我会考虑另一种方法,但在与一些Java开发人员交谈后,这似乎是我正在做的最好的方法。

谢谢

你可能并不需要自己写,只是用一些轻量级的Java Web服务器/ servlet容器像jettysimple

,看起来在这里,如果你还是想知道如何解析HTTP POST一个HTTP服务器要求http://www.jmarshall.com/easy/http/#postmethod

+0

我将尝试嵌入码头。我可以看到它有很好的文档,但是它都假设你知道如何将代码嵌入到jar文件中。我不。 – danpalmer 2010-04-30 18:41:56

+0

我确实设法嵌入码头,它非常棒。谢谢你说服我这样做。你为我节省了很多编码,并且把我的头发撕了很多! – danpalmer 2010-05-07 17:11:02

在你的情况下,我可能不会使用低级套接字连接。

我建议你根据你的需要,使用一些servlet容器,或者只是一个简单的servlet。使用servlet可以轻松访问POST数据,处理它并向调用者返回一些内容。

如果您不想使用像Tomcat这样的独立servlet容器,那么您可以尝试一个可嵌入的servlet容器,如Jetty或winstone servlet容器。

如果您需要更复杂的东西,可以使用一些Web服务技术,如JAX-RS或JAX-WS。这允许您以简单的方式为Java资源提供全功能的API。

+0

嗯。我真的不想使用任何复杂的东西。我的资源非常有限,代码只接收两种请求,根本不需要发出响应。越简单越好,因此我为什么使用套接字。另外,我的网络主机不支持你上面提到的任何我不认为的东西。目前,测试代码仅仅是一个我运行的Jar文件,它等待连接。 – danpalmer 2010-04-30 16:54:39

+0

实现你自己的http服务器真的很乏味,容易出错。使用winstone,您仍然可以坚持使用单个jar并使用完整的servlet api,请参阅:http://winstone.sourceforge.net/#embedding。码头也可能是相同的,或者第5号已经提到“简单”。 – 2010-04-30 17:20:09

+0

我想我会在我的应用程序中嵌入Jetty,因为它们的嵌入文档看起来非常好。但是我不想嵌入我不需要的所有位。我如何弄清楚我的内容和我不知道的内容,以及如何将代码添加到我的应用程序中?与Visual Studio和Xcode相比,Eclipse易于使用,所以我无法弄清楚如何去做。有大量不同的导入方法! – danpalmer 2010-04-30 18:41:10