시간 간격 후 HTTP 연결 시간 초과/분리를하는 방법은 무엇입니까?
-
20-09-2019 - |
문제
나는 아파치에 새로왔다 HttpClient
, 나는 다음 코드를 사용하여 특정 시간 간격 후에 HTTP 연결 시간 초과 (분리)를 얻었습니다.
PostMethod method = new PostMethod(authURL);
HttpClient client = new HttpClient();
HttpClientParams params= new HttpClientParams();
params.setParameter(params.CONNECTION_MANAGER_TIMEOUT, 10); //10 Nano second
client.executeMethod(method);
그러나 시간 초과/분리를 희망하지 않고 1 분 이상 기다립니다. 문제는 어디에있을 수 있습니까?
해결책
httpclient와 관련된 2 개의 타임 아웃이 있습니다. 둘 다 설정하십시오.
client.getHttpConnectionManager().
getParams().setConnectionTimeout(5000);
client.getHttpConnectionManager().
getParams().setSoTimeout(5000);
그러나 연결이 기본 소켓 호출에 갇히면 값이 무시됩니다. 따라서 요청을 다른 스레드로 실행하여 시간을 내릴 수 있습니다. 이 질문에 대한 내 대답을 어떻게 해야하는지 확인하십시오.
다른 팁
Connection Manager 시간 초과는 연결 관리자로부터 연결을 얻으려고하는 행위가 너무 오래 걸릴 때 트리거됩니다. 이것은 HTTP 연결 자체의 시간 초과와 동일하지 않습니다. 대신 httpclientparams.setsotimeout ()를 사용하십시오.
설정을 보셨습니까? so_timeout ?
메소드를 실행할 때 사용할 수 있도록 소켓 타임 아웃 (SO_TIMEOUT)을 밀리 초로 설정합니다. 제로의 시간 초과 값은 무한한 시간 초과로 해석됩니다.
제휴하지 않습니다 StackOverflow