호스트 B에서 서버에 메시지를 POST하기 위해 Apache HTTPClient (4.2.5)를 사용하는 호스트 A에 클라이언트가 있습니다. 호스트 A에서 연결 및 읽기/소켓 시간 초과를 설정하고 있습니다. 권장 패션 : 나는 클라이언트 전송이 갑자기 종료되는 경우에 시간 제한 동작을 테스트하려고하고아웃 바운드 스트림이 원격 장애로 인해 중단되면 Apache HTTPClient가 시간 초과 구성을 무시합니까?
client = new DefaultHttpClient();
params = client.getParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 20000);
는 일부 전부는 아니지만의 후 (호스트 B에 대상 서버의 충돌에 의해 예) 데이터 스트림이 전송되었습니다. 내 테스트 방법 따라서있다 :
- 호스트 A에 클라이언트 응용 프로그램에서 HTTP의 POST를 시작
- 로그 클라이언트가 기본 아파치 HttpClient를 프레임 워크를 호출 한 것을 나타 내기 직후에 호스트 B에 방화벽 규칙을 활성화 호스트 A의 트래픽을 차단하십시오.
사실상 테스트가 중간 스트림의 요청 데이터를 차단한다는 것을 패킷 캡처를 통해 확인할 수 있습니다.
내가 나중에 읽기 제한 시간 간격 후 (20 초) 시간 초과하는 클라이언트 응용 프로그램을 예상했을 것이다,하지만 내가 대신보고하고있어 클라이언트가 더 이상 간격합니다 (5백-6백초이 범위에 대한 응답이다) 마지막으로 발생하기 전에 제한 시간을 연결하십시오.
클라이언트가 내가 타임 아웃으로 지정한 내용을 무시하는 이유에 대해 설명 할 수 있습니까 (또는 실패 할 수도 있습니다)? 이 경우 타임 아웃을 시행 할 수있는 방법이 있습니까?