2011-03-01 4 views
3

안드로이드와 함께 제공되는 HttpComponents 라이브러리를 사용하고있었습니다. 나는 GET과 POST로 params를 보내고 서버로부터 InputStream이나 String을 받기 위해 2 개의 클래스를 작성했다. 모두 잘 작동했습니다 : 스레드에서 모든 다운로드, 시작, 일시 중지, 계속 ...하지만 오늘은 두 가지 다운로드를 동시에 시작했고 그 중 아무 것도 끝내지 않았습니다.

나는 구글의 솔루션을 봤는데 안드로이드는 HttpCore 4.0-beta2와 함께 나온다. 예, 아주 오래되었습니다. 그것은 2008 년 7 월 1 일에 릴리스되었고 안드로이드는 그 이후로 그것을 업데이트하지 않았습니다 ...

저는 수업을 재 작성했지만 현재 HttpURLConnection을 사용하고 있으며 동시에 두 개의 파일을 다운로드 할 수 있습니다.

Android에서 HttpComponents를 사용하려는 경우 경고합니다. 이제 내 질문. 내 프로젝트에 새 버전 4.1을 가져 오려고합니다. jar 파일을 빌드 된 경로에 추가했지만 새로운 (4.1) 패키지와 이전 패키지 (beta2, 4.0)가 같은 경우이 병을 어떻게 사용할 수 있습니까?

감사합니다.

당신은 ThreadSafeClientConnManager와 DefaultHttpCLinet을 만들어야합니다
해결 :Android에서 최신 HttpComponents 버전을 사용하려면 어떻게해야합니까?

HttpParams parameters = new BasicHttpParams(); 
HttpProtocolParams.setVersion (parameters, HttpVersion.HTTP_1_1); 
HttpProtocolParams.setContentCharset (parameters, HTTP.UTF_8); 
HttpProtocolParams.setUseExpectContinue (parameters, false); 
ConnManagerParams.setMaxTotalConnections (parameters, MAX_CONNECTIONS); 

SchemeRegistry schReg = new SchemeRegistry(); 
schReg.register (new Scheme ("http", PlainSocketFactory.getSocketFactory(), 80)); 

client = new DefaultHttpClient (new ThreadSafeClientConnManager (parameters, schReg), parameters); 

UPDATE : 또한 AndroidHttpClient를 사용할 수 있습니다. 이 클래스를 사용하면

답변

3

More info

AndroidHttpClient client = AndroidHttpClient.newInstance ("Android"); 
ThreadSafeClientConnManager

를 사용할 필요가 없습니다하지만 오늘은 동시에 그들 중 누구도 완료를 두 다운로드 시작되지했습니다.

HttpClient가 기본적으로 스레드로부터 안전하지 않기 때문에. 이를 위해서는 ThreadSafeClientConnManager을 연결해야합니다. 이 내용은 HttpClient 설명서에서 다룹니다.

나는 구글의 해결책을 찾아 봤는데 안드로이드는 HttpCore 4.0-beta2와 함께 나온다. 예, 아주 오래되었습니다. 그것은 01 년 7 월 2008 년 출시 된 안드로이드는 그 이후를 업데이트하지 않았습니다 그리고 "2008년 7월 1일"이후 꽤 많은 커밋이 있음을 발견하십시오

https://android.googlesource.com/platform/external/apache-http

도청입니다.

저는 수업을 다시 작성했지만 현재는 HttpURLConnection을 사용하며 동시에 두 개의 파일을 다운로드 할 수 있습니다.

대부분의 프로그래머는 HttpClient에서도이 작업을 수행 할 수 있습니다.

새로운 (4.1) 패키지와 이전 (beta2, 4.0) 패키지가 동일한 경우 어떻게 이러한 jar를 사용할 수 있습니까?

수 없습니다.

+0

감사합니다.하지만 제공 한 예는 4.1 버전입니다. 솔루션은 내 게시물에 있습니다. –

관련 문제