httpclient를 사용하여 다른 스레드에서 동일한 URL에 연결합니다
-
16-09-2019 - |
문제
Java의 Httpclient를 사용하여 여러 스레드에서 URL 내용을 얻는 올바른 방법은 무엇입니까?
예를 들어 항목으로 목록을로드하고 각 항목을 다른 스레드로 동시에로드하고 다른 매개 변수로 동일한 URL에서 정보를 얻습니다.
응용 프로그램에서 다른 스레드에서 동일한 URL에서 XML을 읽을 때 예외를 찾을 수 없습니다.
해결책
나는 당신이 httpclient 3.0을 사용한다고 가정합니다. 이 시도,
HttpClient client = new HttpClient(new MultiThreadedHttpConnectionManager());
다른 팁
허용 된 대답은 httpclient 3.x에 대한 독창적 인 대답과 현재 버전은 4.1 (Android에도 포함되어 있음)이므로 Working 4.x 예제를 공유하고 싶습니다. 어쩌면 그것은 누군가에게 번식을 구할 수 있습니다.
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
HttpParams parameters = new BasicHttpParams();
ClientConnectionManager connectionManager = new ThreadSafeClientConnManager(parameters, schemeRegistry);
HttpClient httpClient = new DefaultHttpClient(connectionManager, parameters);
ThreadSafeClientConnManager
4.2에도 부족했습니다. 사용 대신 org.apache.http.impl.conn.PoolingHttpClientConnectionManager
데이터를 응용 프로그램 범위에 배치하면 모든 스레드에서 사용할 수 있어야합니다. 데이터가 민감한 경우에 사용해서는 안되며, 제거되지 않으면 서버 수명을 통해 존재하기 때문에 데이터가 완료되면 명시 적으로 제거해야합니다.
제휴하지 않습니다 StackOverflow