确定我是否收到了HttpRequest或HttpResponse?

时间:2018-05-08 18:10:20

标签: sockets http netty

我有一个监听端口的netty服务器。它可以在此端口上接收HttpResponses或HttpRequests。如何设置管道来处理两者并区分两者?这可能吗?连接是从此服务器启动的,而不是从它发起的。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用PortUnification示例中的 isHttp 方法。它检查接收消息的前两个无符号字节,以确定它是否可能是HTTP动词,从而将消息标识为HTTP请求。您可能需要稍微修改它,具体取决于任何响应的可能内容。

private static boolean isHttp(int magic1, int magic2) {
  return
     magic1 == 'G' && magic2 == 'E' || // GET
     magic1 == 'P' && magic2 == 'O' || // POST
     magic1 == 'P' && magic2 == 'U' || // PUT
     magic1 == 'H' && magic2 == 'E' || // HEAD
     magic1 == 'O' && magic2 == 'P' || // OPTIONS
     magic1 == 'P' && magic2 == 'A' || // PATCH
     magic1 == 'D' && magic2 == 'E' || // DELETE
     magic1 == 'T' && magic2 == 'R' || // TRACE
     magic1 == 'C' && magic2 == 'O';   // CONNECT
}