java httpcomponents_java – 如何使用Apache httpcomponents从NHttpRequ...
我正在使用Apache httpcomponents實現一個彗星式(延遲響應)http服務器.我的代碼與http://hc.apache.org/httpcomponents-core-ga/examples.html的“基本非阻塞HTTP服務器”示例非常相似
我使用DefaultServerIOEventDispatch和DefaultListeningIOReactor來分派請求,就像在示例代碼中一樣.在我的NHttpRequestHandler里面,我想記錄每個請求的IP地址.
在HttpRequestHandler中,您可以訪問HttpRequest,HttpResponse和HttpContext.使用NHttpRequestHandler,您還有一個NHttpResponseTrigger.如何獲取請求來自的遠程IP地址?我無法看到如何使用可用對象執行此操作.
更新,這是我最終使用的Scala代碼:
def getIp(context: HttpContext): Option[String] = {
val conn = context.getAttribute(ExecutionContext.HTTP_CONNECTION)
conn match {
case inet: HttpInetConnection =>
inet.getRemoteAddress match {
case sock: java.net.InetSocketAddress => // HttpComponents 4.1
Some(sock.getAddress.getHostAddress)
case adr: java.net.InetAddress => // HttpComponents 4.2
Some(adr.getHostAddress)
case unknown =>
Some(unknown.toString)
}
case _ => None
}
}
正如您所看到的,HttpComponents 4.1中還有一個額外的步驟.
總結
以上是生活随笔為你收集整理的java httpcomponents_java – 如何使用Apache httpcomponents从NHttpRequ...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyQt5 笔记1 -- 环境配置
- 下一篇: PyQt5 笔记2 -- Qt Desi