문제

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

데이터를 응용 프로그램 범위에 배치하면 모든 스레드에서 사용할 수 있어야합니다. 데이터가 민감한 경우에 사용해서는 안되며, 제거되지 않으면 서버 수명을 통해 존재하기 때문에 데이터가 완료되면 명시 적으로 제거해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top