2012-06-29 32 views
0

我的客户端运行在Tomcat服务器上,我无权访问客户端代码。所以我必须构建这个服务器来处理来自客户端的请求。为此,我正在读一个端口上的字节流如下:Tomcat可能发送GET请求,我无法处理

ServerSocket ss = new ServerSocket(8999); 
Socket s = ss.accept(); 
InputStreamReader in = new InputStreamReader(s.getInputStream()); 

cbuf = new char[buf_length]; 
int char_read = in.read(cbuf,0,10000); 

inputLine = new String(cbuf); 

我应该从客户端获取SOAP POST请求,这些我能应付,但这些客户端请求之间,我得到一个GET请求看起来如下:

GET/HTTP/1.1 
User-Agent: Java/1.6.0_21 
Host: localhost:8999 
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 
Connection: keep-alive 

因此,用户代理是不是客户端(它可能是Tomcat)的,它接受一切。所以我的服务器代码无法处理这个问题。所以我尝试关闭套接字,重新打开并尝试读取,但它再次读取相同的GET请求。

我是否需要为此请求发送特定响应以继续我的程序,以便客户端能够向我发送下一个请求?

感谢

+0

为什么不使用现有的Web服务器作为解决方案的基础?它们存在许多形状和形式。现在,你正在浪费时间和精力而不是基本的东西,沿途会出现更多这样的陷阱。顺便说一句,他想要的默认文件,所以它可能只是某种活着测试。返回一个空文件,你应该可以继续。 – fvu

+1

Tomcat收到请求,但不会生成请求。这不是Tomcat本身提出的请求。 –

回答

0

如果你真的这样想的问题是,你不能与任何在Accept标题列出的类型的响应,那么正确的HTTP响应代码为406。您构建这个HTTP响应状态码,发送并关闭。

但是,你是什么意思,你不能处理它?因为请求说它会接受任何东西!

至于客户对406的回应是什么,那么这取决于客户。如果它想重试,它会重试,但它不应该响应具有相同Accept标头的406。

你甚至不清楚向你提出什么请求(它不是Tomcat) - 当然这是你的大部分问题,对吧?图表明。然后你可以弄清楚你应该做什么。

相关问题