在Java中解析没有DNS查询的URL

时间:2010-11-03 16:51:16

标签: java url

我正在使用Java解析squid日志。使用URL类似乎很合适。但是,此类会发出DNS请求,这会无限期地降低解析速度。还有其他简单的方法可以从网址中提取主机名和端口吗?

条件

  • url架构可能在squid日志中被忽略
  • 应为ftp,http,https协议
  • 派生缺席(默认)端口

日志示例:

1288763851.129    295 10.10.100.10 TCP_MISS/200 435 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288763881.110    275 10.10.100.10 TCP_MISS/200 434 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288763883.093  60001 10.10.102.202 TCP_MISS/503 0 CONNECT www.update.microsoft.com:443 - DIRECT/- -
1288763884.301      0 10.10.102.202 NONE/400 3506 GET / - NONE/- text/html
1288763911.194    359 10.10.100.10 TCP_MISS/200 435 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288763941.097    264 10.10.100.10 TCP_MISS/200 434 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288763944.094  59777 10.10.102.202 TCP_MISS/503 0 CONNECT www.update.microsoft.com:443 - DIRECT/- -
1288763971.123    289 10.10.100.10 TCP_MISS/200 434 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288764002.257   1421 10.10.100.10 TCP_MISS/200 435 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain

编辑:我必须为此任务编写自己的类解析器。如果thestring具有用于主机名的IP或简单字符串,则使用InetAddress。

2 个答案:

答案 0 :(得分:1)

您可以尝试Restlet的Reference课程。

答案 1 :(得分:1)

使用java.net.URI类。