Turns out there's a 3rd timeout: ConnManagerParams.setTimeout( params, 2000 );
For whatever reason the connection isn't being established and it was hanging in limbo. Specifying a timeout on the connection manager at least allows me to handle the situation. Just FYI in case anyone else runs into this prob. -S On Sun, Aug 1, 2010 at 5:29 PM, Connick <[email protected]> wrote: > Forgot to mention, it's hanging on httpClient.execute( request ) > > > > On Sun, Aug 1, 2010 at 5:23 PM, Connick <[email protected]> wrote: > >> I have a service that is loading images from a server. Almost every time >> the service runs it gets hung up on what seems to be misfire with the >> connection to the server. On closer inspection it looks as though HTTPClient >> spontaneously decides to hang as the last successful request from the server >> results in a status 200 and I don't see the next request go out. What's >> really bizarre is that it unblocks if I turn the device and force landscape >> (or vice-versa). If I'm loading, say 30 images, I'll have to turn the device >> portrait and landscape 2-3x for all the requests to complete sucessfully. >> Definately a wtf moment. >> >> Here's my setup: >> >> HttpParams params = new BasicHttpParams(); >> HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1 ); >> HttpProtocolParams.setContentCharset( params, >> HTTP.DEFAULT_CONTENT_CHARSET ); >> HttpProtocolParams.setUseExpectContinue( params, true ); >> >> HttpConnectionParams.setConnectionTimeout( params, >> Constants.HTTP_CONNECTION_TIMEOUT ); >> HttpConnectionParams.setSoTimeout( params, >> Constants.HTTP_SOCKET_TIMEOUT ); >> HttpConnectionParams.setStaleCheckingEnabled( params, true ); >> HttpConnectionParams.setLinger( params, 0 ); >> >> SchemeRegistry schemeRegistry = new SchemeRegistry(); >> schemeRegistry.register( new Scheme( "http", >> PlainSocketFactory.getSocketFactory(), 80 ) ); >> schemeRegistry.register( new Scheme( "https", >> SSLSocketFactory.getSocketFactory(), 443 ) ); >> >> ClientConnectionManager connectionManager = new >> ThreadSafeClientConnManager( params, schemeRegistry ); >> >> HttpRequestInterceptor preemptiveAuth = new >> HttpRequestInterceptor() >> { >> public void process( final HttpRequest request, final >> HttpContext context ) throws HttpException, IOException >> { >> AuthState authState = (AuthState) >> context.getAttribute( ClientContext.TARGET_AUTH_STATE ); >> CredentialsProvider credsProvider = >> (CredentialsProvider) context.getAttribute( ClientContext.CREDS_PROVIDER ); >> HttpHost targetHost = (HttpHost) context.getAttribute( >> ExecutionContext.HTTP_TARGET_HOST ); >> >> if( authState.getAuthScheme() == null ) >> { >> AuthScope authScope = new AuthScope( >> targetHost.getHostName(), targetHost.getPort() ); >> Credentials creds = credsProvider.getCredentials( >> authScope ); >> if( creds != null ) >> { >> authState.setAuthScheme( new BasicScheme() ); >> authState.setCredentials( creds ); >> } >> } >> } >> }; >> httpClient = new DefaultHttpClient( connectionManager, params >> ); >> httpClient.addRequestInterceptor( preemptiveAuth, 0 ); >> >> >> > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

