如果我从Java Servlet发送HTTP请求并使用ServerSocket在TCP端口上接收它,我将如何读取HTTP请求参数。任何人都可以帮助我吗?使用Java ServerSocket读取TCP端口上的HTTP参数
下面是使用HttpURLConnection的
URL url = new URL("http://localhost:2309/");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("Content-Type", "application/text");
connection.setRequestProperty("Accept", "application/text");
connection.setRequestMethod("POST");
connection.setRequestProperty("header1", "value1");
在本地主机我的设计
的Servlet
GET/POST:2309我有一个ServerSocket并侦听来自上面的servlet的请求。我试图读取请求,但我只读了HTTP头,但我没有看到请求参数(我知道在上面的例子中,我没有发送任何参数,我试图通过获取连接的输出流并写入它)。
这是我如何尝试发送请求参数到我的ServerSocket程序。
byte[] parameters = someString.getBytes();
OutputStream outStream = connection.getOutputStream();
outStream.write(parameters);
以下是我的ServerSocket程序。
public static void main(String... args) {
int port = 2309;
ServerSocket sSocket = new sSocket(port);
System.out.println("### SERVER IS UP AND RUNNING, WAITING FOR A CLIENT TO CONNECT ON " + port + " ###");
Socket cSocket = sSocket.accept();
System.out.println("### CONNECTION WITH THE CLIENT CREATED ###");
BufferedReader readRequest = new BufferedReader(new InputStreamReader(cSocket.getInputStream()));
PrintWriter writeResponse = new PrintWriter(cSocket.getOutputStream());
String line = "";
while (readRequest != null && (line = readRequest.readLine()) != null) {
if (line.length() == 0)
break;
System.out.println(line);
}
writeResponse.write("HTTP/1.0 200 OK\r\n");
writeResponse.write("Date: Fri, 31 Dec 1999 23:59:59 GMT\r\n");
writeResponse.write("Server: Apache/0.8.4\r\n");
writeResponse.write("Content-Type: text/html\r\n");
writeResponse.write("Content-Length: 59\r\n");
writeResponse.write("Expires: Sat, 01 Jan 2000 00:59:59 GMT\r\n");
writeResponse.write("Last-modified: Fri, 09 Aug 1996 14:21:40 GMT\r\n");
writeResponse.write("\r\n");
writeResponse.write("<TITLE>Example</TITLE>");
writeResponse.write("<P>This is an example</P>");
}
以下是我在我的ServerSocket程序OUTPUT上看到的内容。
### SERVER IS UP AND RUNNING, WAITING FOR A CLIENT TO CONNECT ON 2309 ###
### CONNECTION WITH THE CLIENT CREATED ###
POST/HTTP/1.1
Content-Type: application/text
Accept: application/text
header1: value1
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.7.0_75
Host: localhost:2309
Connection: keep-alive
### CONNECTION WITH THE CLIENT TERMINATED ###
任何人都可以给我建议
我怎么读请求参数
写入到输出流连接对象上,将它让我的 请求参数就在这个地方?
这是一个很好的方法,我只是想保持一个独立 服务器了,这将是我听到的来上 单个端口的请求,并为它服务[OR]有通过什么更好的方法 我可以执行此操作吗?
您的代码不会出现您描述的问题,并且您完全省略了服务器端代码。请修复您的问题,以便可以回复。 – EJP 2015-02-11 04:01:21
为什么不使用像Spring MVC或Jersey这样的预先包装的框架来完成所有这些工作? – chrylis 2015-02-11 04:16:52
或者'Servlet?'不需要重新发明这个轮子。 – EJP 2015-02-11 05:41:25