2014-09-30 1 views
1

나는 아파치 HTTP 프레임 워크 (안드로이드와 함께 제공)를 사용하여 HTTP 서버를 실행하는 자바 (안드로이드) 앱을 가지고있다.어떻게 내가 자바 아파치 서버 HttpRequestHandler.handle()에서 소켓을 닫아 업로드를 거부합니까?

handle(HttpRequest req, HttpResponse resp, HttpContext ctx) 메서드 내에서 PUT 요청을 수락할지 여부를 결정하는 논리를 사용합니다.

업로드를 거부하면 엔터티 (또는 getContent().close())에서 consumeContent()을 수행 할 수 있지만 클라이언트 측에서 업로드 계속 표시됩니다.

대역폭을 절약하고 소켓을 닫고 싶습니다. 그러나 handle() 메소드 내부에서 소켓에 액세스하는 방법을 모르겠습니다.

답변

0

이 문제를 해결하는 방법은 예외를 throw하여 HTTP 오류 메시지가 클라이언트로 다시 전송되도록하고 서버 측 소켓을 닫습니다.

+0

그런 다음 Apache 클라이언트를 다시 시도하지 않도록 설정했습니다. 다행히도 setHttpRequestRetryHandler (new DefaultHttpRequestRetryHandler (0, false)); –