2013-07-27 2 views
0

하나의 httpClient과 함께 여러 POST 요청을 보내야하는 Android 애플리케이션을 작성 중입니다.동일한 클라이언트를 사용하여 여러 요청을 보내는 방법은 무엇입니까?

내 응용 프로그램에서 httpClient가 로그인 요청을 보내고 세션이 설정되고 클라이언트가 로그인되어 동일한 클라이언트 (로그인 한 상태)의 사진을 다운로드하고 싶습니다. 동시에 행해지면 어떻게 할 수 있습니까?

+0

약간 이상한 요청입니다. 같은 고객이있는 이유는 무엇입니까? 왜 동시에? 일반적으로 동시에 여러 요청을 실행하려면 각각의 HttpClient가있는 여러 스레드를 사용합니다. 적어도 여러 개의 연결을 동시에 만들 수 있도록 사용되는 클라이언트 연결 관리자를 변경해야합니다. http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html?org/apache/http/client/HttpClient.html –

+0

@couling 서버에서 일부 사진을 동시에 다운로드하고 싶기 때문에 클라이언트가 로그인해야하므로 하나의 httpclient를 사용하여 모든 사진을 다운로드하고 싶습니다. 어떻게 클라이언트 연결 관리자를 변경할 수 있습니까? – Navid777

+0

Http는 동일한 연결을 유지하는 것을 결코 보장하지 않습니다. 동일한 연결 관리자를 사용하면 도움이되지 않을 수 있습니다. HTTP 서버는 이런 식으로 세션을 거의 유지하지 않습니다. 연결하려는이 서버에 대해 더 자세히 알고 있습니까? –

답변

3
HttpClient createClient() { 
    HttpParams params = new BasicHttpParams(); 
    params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 
    params.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, HTTP.DEFAULT_CONTENT_CHARSET); 
    params.setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, true); 
    params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30 * 1000); 
    params.setParameter(CoreConnectionPNames.SO_TIMEOUT, 30 * 1000); 

    SchemeRegistry schReg = new SchemeRegistry(); 
    schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
    schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); 
    ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg); 

    return new DefaultHttpClient(conMgr, params); 
} 
1

같은 HttpClient를 사용하여 여러 요청을 실행하기 위해 당신은

MultiThreadedHttpConnectionManager conMgr =new MultiThreadedHttpConnectionManager(); 
httpClient = new HttpClient(conMgr); 

MultiThreadedHttpConnectionManager 한 번에 여러 방법의 실행을 허용 할 수 있습니다.

하지만 필요에 따라 구성 할 수 있습니다.

관련 문제